快乐的老鼠 发表于 2016-11-14 06:38:38

DB2 游标遍历

  While方式:

BEGIN
-- 暂存变量.
DECLAREv_id    VARCHAR(10);
DECLAREv_value VARCHAR(10);
DECLARESQLCODE INT;
-- 定义游标.
DECLARE c_test_main CURSOR FOR
SELECT ID, VALUE FROM TEST;
-- 打开游标.
OPEN c_test_main;
-- 填充数据.
FETCH c_test_main INTO v_id, v_value;
-- 假如检索到了数据,才处理.
WHILE (SQLCODE = 0) DO
--INSERT INTO output_debug VALUES(v_value);
update TEST set QTR=v_value where ID = v_id and VALUE=v_value;
-- 填充下一条数据.
FETCH c_test_main INTO v_id, v_value;
END WHILE;
-- 关闭游标
CLOSE c_test_main;
END
  Loop方式:

BEGIN
-- 暂存变量.
DECLAREv_id    VARCHAR(10);
DECLAREv_value VARCHAR(10);
DECLARE SQLCODE INT;
-- 定义游标.
DECLARE c_test_main CURSOR FOR
SELECT id, value FROM Test;
-- 打开游标.
OPEN c_test_main;
MyLoop: LOOP
-- 填充数据.
FETCH c_test_main INTO v_id, v_value;
IF (SQLCODE = 0) THEN
-- 假如检索到了数据,插入 debug 表.
update TEST set QTR='--' where ID = v_id and VALUE=v_value;
ELSE
-- 假如没有数据,跳出循环.
LEAVE MyLoop;
END IF;
END LOOP;
-- 关闭游标
CLOSE c_test_main;
END
页: [1]
查看完整版本: DB2 游标遍历