標籤:
一、動態執行SQL
PREPARE S1 FROM ‘delete from test‘;EXECUTE S1;
二、使用遊標
DECLARE V_CURSOR CURSOR FORSELECT DELETESQL,INSERTSQL FROM FJDC.V_I_DG_DM_ZY_WL_ZBHZ_ATTR T; OPEN V_CURSOR;FETCH V_CURSOR INTO V_DELETESQL,V_INSERTSQL;CLOSE V_CURSOR;
三、WHILE迴圈
WHILE true DO 運算式END WHILE;
四、DB2查詢表資料,產生動態SQL,並執行
1 CREATE PROCEDURE "TEST"."TEST" () 2 BEGIN 3 DECLARE V_DELETESQL VARCHAR(2000); 4 DECLARE V_INSERTSQL VARCHAR(2000); 5 DECLARE I_COUNT INT; 6 7 --確定迴圈次數 8 SELECT COUNT(INSERTSQL) INTO I_COUNT FROM FJDC.V_I_DG_DM_ZY_WL_ZBHZ_ATTR T; 9 IF I_COUNT > 0 THEN10 --遊標11 DECLARE V_CURSOR CURSOR FOR 12 SELECT DELETESQL,INSERTSQL FROM FJDC.V_I_DG_DM_ZY_WL_ZBHZ_ATTR T;13 14 OPEN V_CURSOR;15 WHILE I_COUNT > 0 DO16 SET I_COUNT = I_COUNT-1;17 FETCH V_CURSOR INTO V_DELETESQL,V_INSERTSQL;18 19 --執行動態SQL20 PREPARE S1 FROM V_DELETESQL;21 EXECUTE S1;22 23 PREPARE S1 FROM V_INSERTSQL;24 EXECUTE S1;25 26 END WHILE;27 CLOSE V_CURSOR;28 29 END IF;30 END
DB2預存程序實現查詢表資料,產生動態SQL,並執行