[英]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.