我想基本上调用存储过程中的一组Oracle存储过程。只要我的proc没有返回记录集并采用“in”参数,我很好;但是,其中一个存储过程具有sys_refcursor的“out”参数。调用内部过程也可以正常工作,但是一旦我用一些独立逻辑包装起来,我就会遇到问题。调用存储过程中的“out”ref_cursor的Oracle存储过程
具体来说,我得到以下错误:
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”到“P_RECORDSET”他回答的第19行。
你似乎没有填充'P_RECORDSET';你应该传递'R_MY_PROCESS_EXPORT_ALL'而不是'V_REC'吗? –
@Alex Poole:我编辑了上面的参考文献。正确...因此,我尝试将我的p_recordset传递给R_MY_PROCESS_EXPORT_ALL(p_recordset),但它不会编译,因为此内部过程需要'out'参数。 – saipanman
好吧......我现在觉得很傻......我想我已经很累了......我从上面的参数中传递了p_recordset,现在它的工作......呃! – saipanman