【问题标题】:Oracle Stored Procedures - Returning a Cursor From a Procedure that Opens the CursorOracle 存储过程 - 从打开游标的过程中返回游标
【发布时间】:2011-01-24 05:28:10
【问题描述】:

使用 .Net 和 Oracle 11g - 我一直在通过打开光标从包内的过程中返回数据表。

IE - '为 SOMESQL 打开 TABLEREF;其中 TableRef 是一个 'OUT' 参数。效果很好。

我正在努力做的是让第一个 Proc 调用另一个 Proc 并让第二个 Proc 打开光标。

在 Proc1 内部(将 TableRef 作为 OUT 参数) - 我正在执行立即执行来调用 Proc2。 Proc2 也将 TableRef 定义为输出参数,对 SOMESQL 执行 OPEN TABLEREF。一切都编译得很好-但是当我尝试运行它时;我收到以下错误:

ORA-00604: 递归 SQL 级别 1 发生错误 ORA-01001: 无效游标

谁能告诉我我做错了什么?

编辑 如果我修改我的立即执行语句以包含“OUT TABLEREF”而不是“TABLEREF”,我的错误将更改为... ORA-03113: 通信通道上的文件结束

【问题讨论】:

    标签: .net oracle stored-procedures


    【解决方案1】:

    在动态SQL之间传递游标变量时,可能需要声明为IN OUT

    BEGIN
        EXECUTE IMMEDIATE '
        BEGIN
            EXECUTE IMMEDIATE ''BEGIN OPEN :tableRef FOR SELECT 1 FROM dual; END;'' USING IN OUT :tableRef;
        END;
        ' USING IN OUT :tableRef;
    END;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      相关资源
      最近更新 更多