调用过程 Oracle apex

call procedure Oracle apex

我创建了一个 PL/SQL 程序,如下所示:https://dba.stackexchange.com/questions/45016/dynamic-oracle-pivot-in-clause

现在我想将该过程用作报告的来源。我正在使用 Oracle Apex 4.0。

当我这样写的时候:

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

出现以下错误:

ORA-20001: Query must begin with SELECT or WITH

但是,可以按照此处所述使用过程作为源: Calling procedure in oracle apex

您不能使用 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

首先您需要select区域类型PL/SQL动态内容。 然后调用数据库过程--

declare
   vname number;
begin
   R_MENU(vname );
end;
**// call oracle procedure in php**
$return = parent::sql("call MIGRATION_MO('".$variable1."','".$variable2."')", false);

**// call oracle function in php**
$return = parent::sql("SELECT MIGRATION('".$variable1."','".$variable2."') AS STATUS FROM DUAL", false);