【发布时间】:2014-03-25 20:25:41
【问题描述】:
我试图基本上在存储过程中调用一组 Oracle 存储过程。只要我的 proc 不返回记录集并采用“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;你应该传递R_MY_PROCESS_EXPORT_ALL而不是V_REC吗? -
@Alex Poole:我编辑了上面的过程以供参考。对...所以,我尝试将我的 p_recordset 传递给 R_MY_PROCESS_EXPORT_ALL(p_recordset) 但它不会编译,因为这个内部过程需要一个' out' 参数。
-
好吧……我现在觉得很傻……我想我累了……我从上面的参数中传入了 p_recordset,现在它可以工作了……呃!
标签: sql oracle stored-procedures