调用程序 Oracle apex

Posted

技术标签:

【中文标题】调用程序 Oracle apex【英文标题】:call procedure Oracle apex 【发布时间】:2015-09-12 13:21:35 【问题描述】:

我在这里创建了一个 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:查询必须以 SELECT 或 WITH 开头

但是,可以使用过程作为源,如下所述: Calling procedure in oracle apex

【问题讨论】:

Oracle 顶点报告只能基于 SQL 查询,或基于返回 SQL 查询的 PL/SQL 函数体。对于后者,您的匿名块必须返回一个包含要执行的查询的字符串。 您链接到的问题与 Apex 报告没有任何关系。 我认为您可能想要做的是将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

【讨论】:

【参考方案2】:

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

declare
   vname number;
begin
   R_MENU(vname );
end;

【讨论】:

【参考方案3】:
**// 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);

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于调用程序 Oracle apex的主要内容,如果未能解决你的问题,请参考以下文章

Oracle APEX 应用程序包中匿名块的执行点

Oracle APEX AJAX 调用失败

在 Oracle APEX v4.2.2 中通过 Ajax 调用 Oracle 函数以进行现场验证

JavaScript 调用`setTimeout` 在 Oracle Apex 中不起作用

使用 Oracle APEX 对自签名、未经认证的网站进行 REST 调用

导出应用程序 oracle apex