作者博客地址更換至CSDN,地址:http://blog.csdn.net/littlebrain4solving
由於有時候一些復雜的業務邏輯將要通過存儲過程的循環語句進行處理;以下列出2種DB2存儲過程的循環語句,方便以后的查看並使用!
本人推薦第一種方式的使用,最大的優點就是比較直觀;在需要操作很多字段的情況下,不需要定義太多的字段變量作為中間存儲媒介.
一.FOR方式(FOR .. AS [游標名] CURSOR FOR [SELECT......])
BEGIN --語句塊,必須要加上,否則會出錯. FOR V AS MYCURSOR CURSOR FOR SELECT ID,NAME,AGE FROM PEOPLE DO BEGIN --這里進行業務邏輯處理,每行循環的時候,每列的值將會存放於V變量中 --示例: 把數據插入到另外一張表 INSERT INTO PERSON(NAME,AGE) VALUES(V.NAME,V.AGE); END; END FOR; END;
二.WHILE方式(DECLARE [游標名] CURSOR FOR [SELECT.....])
BEGIN --語句塊,必須要加上,否則會出錯. DECLARE NOTFOUND INT DEFAULT 0; DECLARE V_NAME VARCHAR(20); DECLARE V_AGE VARCHAR(20); DECLARE MYCURSOR CURSOR FOR SELECT NAME,AGE FROM PEOPLE; DECLARE CONTINUE HANDLER FOR NOT FOUND SET NOTFOUND = 1; WHILE NOTFOUND = 0 DO FETCH MYCURSOR INTO V_NAME,V_AGE --這里的順序要與查詢結果字段順序一致 --這里會多循環一次,所以需要加一個判斷 IF(NOTFOUND = 0) THEN INSERT INTO PERSON(NAME,AGE) VALUES(V_NAME,V_AGE); END IF; END WHILE; END;
