如何从 BI Publisher 调用存储过程?

Posted

技术标签:

【中文标题】如何从 BI Publisher 调用存储过程?【英文标题】:How to call Stored Procedure from BI Publisher? 【发布时间】:2015-10-22 19:48:47 【问题描述】:

我正在尝试从 BI Publisher 调用存储过程,并且需要一些帮助来实现此目的。

这是我所拥有的: 在我的数据模型中,我有以下代码:

DECLARE
  type refcursor is REF CURSOR;
  xdo_cursor refcursor;
BEGIN
  OPEN :xdo_cursor FOR
  SELECT IPVOWN.F1(5) FROM DUAL;
  COMMIT;
END;

SQL 类型 = 非标准 SQL 当您从 xdo_cursor 中删除“:”时,可以在 SQL Developer 中运行此代码,但在 BI 中需要“:”。我在日志文件中收到以下错误:

<txt>java.sql.SQLException: ORA-06550: line 2, column 22:
 PLS-00103: Encountered the symbol "." when expecting one of the following:

 * &amp; = - + ; &lt; / > at in is mod remainder not rem
 &lt;an exponent (**)> &lt;> or != or ~= >= &lt;= &lt;> and or like like2
  like4 likec between || multiset member submultiset

  at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:462)
  at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:405)

提前致谢。

【问题讨论】:

【参考方案1】:

以下是有关如何从 BI Publisher 调用函数的步骤/文档:

1) 确保您使用的是 SYS_REFCURSOR。

2) 在 DB 中创建如下函数:

CREATE OR REPLACE FUNCTION FUNC1 (P1 VARCHAR2) RETURN SYS_REFCURSOR IS
XDO_CURSOR SYS_REFCURSOR;
BEGIN
            IF P1 = 'USA' THEN
              OPEN XDO_CURSOR FOR
              'SELECT  TO_CHAR(SYSDATE,''MM-DD-YYYY'') AS CURRENT_DATE, X.STATE FROM schemaName.XX1 X WHERE X.ID IN (100,200,400)';
             RETURN XDO_CURSOR;
            ELSE
              OPEN XDO_CURSOR FOR
              'SELECT  TO_CHAR(SYSDATE,''MM-DD-YYYY'') AS CURRENT_DATE, X.STATE FROM schemaName.XX1 X WHERE X.ID IN (300,500,600)';
              RETURN XDO_CURSOR;
            END IF ;
END FUNC1;

3) 以 System 身份登录并授予 BI 用户执行权限

GRANT EXECUTE ON schemaName.FUNC1 TO BI_User;

在 BI Publisher 中的数据集中 - 您可以执行以下操作来调用函数:确保 SQL 的类型是“过程调用”

  DECLARE
    type refcursor is REF CURSOR;
    xdo_cursor refcursor;
  BEGIN
    :xdo_cursor := SchemaName.func1(:P1);
  END;

有关更多信息,您可以使用以下链接: https://community.oracle.com/thread/888365

【讨论】:

以上是关于如何从 BI Publisher 调用存储过程?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ReportRawData 调用 BI Publisher Web 服务

如何更改 Oracle BI Publisher 中的日期格式?

如何重命名 BI Publisher 报表?

如何对 RTF 中的不同值求和(BI Publisher)

如何使用 BI Publisher Desktop 在 RTF 模板中将数字格式化为字母?

BI Publisher Report中如何将Ms.Word表格的第一行和第二行保持在一个页面中?