2015-09-12 4 views
2

Я создал процедуру, как здесь: https://dba.stackexchange.com/questions/45016/dynamic-oracle-pivot-in-clauseвызов процедуры Oracle апекс

Теперь я хочу вызвать процедуру, используя оракула верхушку 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-запрос или тело PL/SQL, возвращающее SQL-запрос. Для последнего ваш анонимный блок должен ВОЗВРАТИТЬ строку, содержащую запрос для выполнения. –

+0

Вопрос, с которым вы связаны, не показывает ничего общего с отчетами Apex. –

+0

Я думаю, что вам может понадобиться изменить 'dynamic_pivot' в функцию, которая возвращает VARCHAR2, а не курсор. –

ответ

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

Смежные вопросы