2015-09-12 98 views
2

我已經創建的過程,就像這裏:https://dba.stackexchange.com/questions/45016/dynamic-oracle-pivot-in-clause呼叫流程的Oracle APEX

現在我想用的Oracle APEX 4.0在源報告調用程序。

當我把它寫成:

Declare 
x refcursor; 
begin 
dynamic_pivot(x); 
end; 

這說明我的錯誤:

ORA-20001: Query must begin with SELECT or WITH

但是,我們可以在Oracle中頂點報告,因爲調用程序: Calling procedure in oracle apex

+2

一個Oracle頂點報告只能根據SQL查詢或返回SQL查詢的PL/SQL函數體。對於後者,您的匿名塊必須返回一個包含要執行的查詢的字符串。 –

+0

您鏈接的問題沒有顯示與Apex報告有關的任何內容。 –

+0

我想你可能想要做的就是將'dynamic_pivot'改成一個返回VARCHAR2而不是ref的函數。 –

回答

1

你可以不使用PL/SQL過程作爲交互式報告的來源。 你可以做的是創建一個你在SELECT查詢中使用的函數。 如:

SELECT * FROM TABLE YOUR_FUNCTION(PARM1,PARM2); 

的定義可能是這樣的:

create or replace function your_function ( PARM1 in integer, PARM2 in integer ) return holiday_tab pipelined as v_easter_day date; begin ... end;

更多關於流水線來看看: http://docs.oracle.com/cd/B28359_01/appdev.111/b28425/pipe_paral_tbl.htm#CHDJEGHC