-- 被呼叫端:宣告 RESULT SETS 2,游標 WITH RETURN TO CALLER
CREATE PROCEDURE DB2INST1.Proc1 ()
LANGUAGE SQL
RESULT SETS 2
P1: BEGIN
DECLARE c1 CURSOR WITH RETURN TO CALLER FOR SELECT market_code FROM tb_market_code;
DECLARE c2 CURSOR WITH RETURN TO CALLER FOR SELECT market_code FROM tb_market_code;
OPEN c1; OPEN c2;
END P1
-- 呼叫端:使用 RESULT SET LOCATOR
CREATE PROCEDURE DB2INST1.Proc2 (OUT out_market_code CHAR(1))
LANGUAGE SQL
P1: BEGIN
DECLARE loc1, loc2 RESULT_SET_LOCATOR VARYING;
CALL Proc1;
ASSOCIATE RESULT SET LOCATOR (loc1, loc2) WITH PROCEDURE Proc1;
ALLOCATE cursor1 CURSOR FOR RESULT SET loc1;
ALLOCATE cursor2 CURSOR FOR RESULT SET loc2;
FETCH cursor1 INTO out_market_code;
CLOSE cursor1;
END P1
DECLARE CURSOR C1 FOR STMT1;
PREPARE STMT1 FROM 'ALLOCATE C2 CURSOR FOR RESULT SET ?';
SELECT CAST(CURRENT TIME AS CHAR(8)) FROM tb_market_code
CREATE PROCEDURE pr_clear_task_ctrl (
IN IN_BRANCH_CODE CHAR(4),
IN IN_TRADEDATE CHAR(8),
IN IN_TASK_ID CHAR(2),
IN IN_SUB_TASK_ID CHAR(4),
OUT OUT_SUCCESS_FLAG INTEGER
)
DYNAMIC RESULT SETS 0
LANGUAGE C
PARAMETER STYLE GENERAL WITH NULLS -- 關鍵:否則 SQL SP 呼叫會保護錯誤
NO DBINFO
FENCED
MODIFIES SQL DATA
EXTERNAL NAME 'pr_clear_task_ctrl!pr_clear_task_ctrl'
一般推薦 FENCED,特殊需求才用 UNFENCED。