Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用“调用Oracle存储过程”;“出去”;存储过程中的ref_游标_Sql_Oracle_Stored Procedures - Fatal编程技术网

Sql 使用“调用Oracle存储过程”;“出去”;存储过程中的ref_游标

Sql 使用“调用Oracle存储过程”;“出去”;存储过程中的ref_游标,sql,oracle,stored-procedures,Sql,Oracle,Stored Procedures,我尝试在存储过程中调用一组Oracle存储过程。只要我的进程没有返回记录集并接受“in”参数,我就没事;但是,其中一个存储过程具有sys_refcursor的“out”参数。调用内部进程也可以很好地工作,但是一旦我用一些参与逻辑来总结它们,我就会遇到问题 具体来说,我得到以下错误: Error starting at line 2 in command: EXECUTE CRU_MY_PROCESS_EXPORT (1,'EAST',P_RECORDSET => :RC) Error

我尝试在存储过程中调用一组Oracle存储过程。只要我的进程没有返回记录集并接受“in”参数,我就没事;但是,其中一个存储过程具有sys_refcursor的“out”参数。调用内部进程也可以很好地工作,但是一旦我用一些参与逻辑来总结它们,我就会遇到问题

具体来说,我得到以下错误:

Error starting at line 2 in command: 
EXECUTE CRU_MY_PROCESS_EXPORT (1,'EAST',P_RECORDSET => :RC) 
Error report: 
Cursor is closed. RC
以下是存储过程:

1 create or replace PROCEDURE CRU_MY_PROCESS_EXPORT ( 
2   P_ID_NR IN NUMBER,
3   P_ENVIRONMENT IN VARCHAR,
4   P_RECORDSET OUT SYS_REFCURSOR ) AS
5
6    V_DB_SOURCE_ID NUMBER :=1;
7    V_REC SYS_REFCURSOR;
8
9   BEGIN
10     IF P_ENVIRONMENT = 'WEST' THEN
11      R_MY_PROCESS_SYNC_WEST(V_DB_SOURCE_ID, P_ID_NR);
12    END IF;  
13
14    IF P_ENVIRONMENT = 'EAST' THEN
15      R_MY_PROCESS_SYNC_EAST(V_DB_SOURCE_ID); 
16    END IF; 
17
18   --following proc call takes 'out' sys_refcursor as well
19   R_MY_PROCESS_EXPORT_ALL(V_REC);  
20     
21 END CRU_MY_PROCESS_EXPORT;
因此,任何帮助、建议都将不胜感激

回答
谢谢所有帮助我思考这个问题的人。。。将参数为“V_REC”的第19行更改为“P_RECORDSET”就是答案。

我看不出您在哪里使用

P_RECORDSET
参数。如果调用方希望您返回打开的游标,则需要返回打开的游标


我的直觉是,你不想声明一个
v_rec
局部变量,你想把
p_记录集
传递给
r_我的进程_导出_所有
,我猜它也有一个
OUT
类型的
SYS_REFCURSOR

参数,你似乎没有填充
p_记录集
;你是否应该传递
R\u MY\u PROCESS\u EXPORT\u ALL
而不是
V\u REC
?@Alex Poole:我编辑了上面的过程以供参考。对……因此,我尝试将我的p\u记录集传递给R\u MY\u PROCESS\u EXPORT\u ALL(p\u记录集),但它无法编译,因为这个内部过程带有一个“out”参数。好吧……我现在觉得很傻。。。我想我累了。。。我从上面的参数传入了p_记录集,现在它正在工作…啊!嗨,贾斯汀,我不知道我在想什么。。。我猜我已经玩了这么久,我有错误的语法…我只是按照你的建议,它的工作!谢谢