Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: Problem with open cursors.
I don't think just closing it will be sufficient. Since it is
expecting a ref cursor as an out parameter, I believe you will need to
return an empty result set, as demonstrated below.
scott_at_ORA92> CREATE TABLE UserAProFaxSettings
2 (Code NUMBER, 3 Sender VARCHAR2(10), 4 Title VARCHAR2(10), 5 DialTone NUMBER, 6 Preffix VARCHAR2(10), 7 DialWait NUMBER, 8 DialRetry NUMBER, 9 Modem VARCHAR2(10), 10 FaxServer NUMBER)
Table created.
scott_at_ORA92> CREATE OR REPLACE PROCEDURE FaxSettings
2 (p_USERCODE number, 3 p_HSENDER VARCHAR2, 4 p_HTITLE VARCHAR2, 5 p_DIALTONE number, 6 p_PREFFIX VARCHAR2, 7 p_WAIT number, 8 p_DIALRETRY number, 9 p_READWRITE number, 10 p_MODEM VARCHAR2, 11 p_FAXSERVER NUMBER, 12 p_result_cur OUT sys_refcursor) 13 AS 14 v_counter NUMBER := 0;
17 SELECT COUNT(*) 18 INTO v_counter 19 FROM UserAProFaxSettings 20 WHERE Code = p_USERCODE; 21 22 IF v_counter = 0 then 23 INSERT INTO UserAProFaxSettings24
25 VALUES 26 (p_USERCODE, 27 p_HSENDER, 28 p_HTITLE, 29 p_DIALTONE, 30 p_PREFFIX, 31 p_WAIT, 32 p_DIALRETRY, 33 p_MODEM, 34 p_FAXSERVER); 35 ELSE 36 UPDATE UserAProFaxSettings 37 SET Sender = p_HSENDER, 38 Title = p_HTITLE, 39 DialTone = p_DIALTONE, 40 Preffix = p_PREFFIX, 41 DialWait = p_WAIT, 42 DialRetry = p_DIALRETRY, 43 Modem = p_MODEM, 44 FaxServer = p_FAXSERVER 45 WHERE Code = p_USERCODE; 46 END IF; 47 OPEN p_result_cur FOR SELECT * FROM DUAL WHERE 1 = 2; 48 ELSIF p_READWRITE = 2 THEN 49 OPEN p_result_cur for 50 SELECT * 51 FROM UserAProFaxSettings 52 WHERE Code = p_USERCODE;
Procedure created.
scott_at_ORA92> SHOW ERRORS
No errors.
scott_at_ORA92> VARIABLE g_ref REFCURSOR scott_at_ORA92> SET AUTOPRINT ON scott_at_ORA92> EXECUTE FaxSettings (1, '1', '1', 1, '1', 1, 1, 1, '1', 1,
PL/SQL procedure successfully completed.
no rows selected
scott_at_ORA92> EXECUTE FaxSettings (1, '2', '2', 2, '2', 2, 2, 1, '2', 2,
:g_ref)
PL/SQL procedure successfully completed.
no rows selected
scott_at_ORA92> EXECUTE FaxSettings (1, '3', '3', 3, '3', 3, 3, 2, '3', 3,
:g_ref)
PL/SQL procedure successfully completed.
CODE SENDER TITLE DIALTONE PREFFIX DIALWAIT DIALRETRY MODEM FAXSERVER
1 2 2 2 2 2 2 2 2
scott_at_ORA92> EXECUTE FaxSettings (4, '4', '4', 4, '4', 4, 4, 2, '4', 4,
:g_ref)
PL/SQL procedure successfully completed.
no rows selected Received on Sun Jul 31 2005 - 13:31:31 CDT
![]() |
![]() |