【问题标题】:How to call Stored Procedure from BI Publisher?如何从 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)

提前致谢。

【问题讨论】:

    标签: sql plsql bi-publisher


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 2010-09-22
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多