While方式:
BEGIN -- 暂存变量. DECLARE v_id VARCHAR(10); DECLARE v_value VARCHAR(10); DECLARE SQLCODE 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 -- 暂存变量. DECLARE v_id VARCHAR(10); DECLARE v_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