Reputation: 51
CREATE or replace PROCEDURE return_result_set ( )
LANGUAGE SQL
SPECIFIC return_result_set
DYNAMIC RESULT SETS 1
rrs: BEGIN
DECLARE rs_cur CURSOR WITH RETURN
FOR SELECT *
FROM dummytable;
OPEN rs_cur;
END rrs
I can return result set using cursor by using above stored procedure, but I want to use cursor variable (Weakly-typed) in my stored procedure as the select query and table are going to vary based on a condition. Sample code here seems to be for different use case..
How to return a result set using a Cursor Variable?
Upvotes: 0
Views: 235
Reputation: 12339
Try this as is:
--#SET TERMINATOR @
SET SERVEROUTPUT ON@
BEGIN
DECLARE V_C1 CURSOR;
DECLARE V_I INT;
DECLARE PROCEDURE L_PROC(OUT LP_C1 CURSOR)
BEGIN
-- Dynamic cursor
--DECLARE V_STMT VARCHAR(128) DEFAULT 'SELECT * FROM (VALUES 1) T(I)';
--PREPARE V_S1 FROM V_STMT;
--SET LP_C1 = CURSOR FOR V_S1;
-- Static cursor
SET LP_C1 = CURSOR FOR SELECT * FROM (VALUES 1) T(I);
OPEN LP_C1;
END;
CALL L_PROC(V_C1);
FETCH V_C1 INTO V_I;
CALL DBMS_OUTPUT.PUT_LINE('I: ' || V_I);
CLOSE V_C1;
END@
SET SERVEROUTPUT OFF@
Upvotes: 1