gpt4 book ai didi

.net - Oracle 存储过程 - 从打开游标的过程返回游标

转载 作者:行者123 更新时间:2023-12-04 06:27:16 24 4
gpt4 key购买 nike

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

IE - '为 SOMESQL 打开 TABLEREF;其中 TableRef 是一个“OUT”参数。它工作得很好。

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

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

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

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

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

最佳答案

在动态 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;

关于.net - Oracle 存储过程 - 从打开游标的过程返回游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2388722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com