簡體   English   中英

關於Pl / SQL生成的查詢的Oracle Apex唯一列別名

[英]Oracle Apex unique column alias on query generated by Pl/SQL

我正在嘗試獲取PL / SQL塊動態提取哪個查詢的報告。 我從這篇文章中獲得了靈感,列數是動態的,取決於循環:

declare
l_qry VARCHAR2(4300);
s_qry VARCHAR2(80) := 0;
v_resort_id NUMBER := 1;

begin

l_qry := 'select a.column1,';

FOR pci in ( select id,name from table_pci where resort_id = v_resort_id) LOOP

s_qry := s_qry||'package.some_function (a.id,''' || pci.id || ''' , ''PC'') Property_type,' ;

 END LOOP;

   l_qry := l_qry ||s_qry;

   l_qry := l_qry||'a.column2 from features a where a.feature_type = ''condition1'' ';


return(l_qry);

end;

Property_type是動態列上的硬編碼別名,因此每次循環都會循環,它會嘗試生成具有相同名稱的列,而Apex會將其標記為error.If我選擇Use Generic Column Names(僅在運行時解析查詢)它返回正確的數字列但命名為Col1,Col2,Col3 ......

如果我嘗試從table_pci中獲取類似名稱的動態,我試過:

s_qry := s_qry||'package.some_function (a.id,''' || pci.id || ''' , ''PC'') '''|| pci.name || ''',' ;

我收到錯誤

failed to parse SQL query:
ORA-00923: FROM keyword not found where expected

任何尋找動態命名列的方法的幫助都非常有用。 任何指針,任何建議和鏈接。

我想您在嘗試使用動態列別名時可能會出現語法錯誤。

嘗試:

s_qry := s_qry||'package.some_function (a.id,''' || pci.id || ''' , ''PC'') AS '|| pci.name || ',' ;

如果pci.name的值可能包含空格,則用雙引號將其括起來:

s_qry := s_qry||'package.some_function (a.id,''' || pci.id || ''' , ''PC'') AS "'|| pci.name || '",' ;

希望能幫助到你...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM