oracle的游标用法,for循环游标和fetch into用法上有什么区别

如题所述

在oracle中游标可以使用for来进行循环,也可以使用fetch方式来循环。

游标的for循环是oracle所有的一个便利的游标操作功能,用for游标循环,可以省去打开游标,关闭游标等操作,而将注意力放在游标循环内的处理上;而且可以不定义游标,直接使用一个子查询作为for循环的游标。例如:

for rc in (select field_a, field_b from table_name) loop
-- 循环处理 
end loop;

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-29
CREATE TABLE test_main (
id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);

INSERT INTO test_main(id, value) VALUES (1, 'ONE');
INSERT INTO test_main(id, value) VALUES (2, 'TWO');
INSERT INTO test_main(id, value) VALUES (3, 'THREE');

DECLARE
-- 定义游标.
CURSOR c_test_main IS
SELECT id, value FROM test_main;
-- 保存游标数据的变量
v_main_data c_test_main%ROWTYPE;
BEGIN
-- 打开游标.
OPEN c_test_main;
LOOP
-- 填充数据(主表).
FETCH c_test_main INTO v_main_data;
-- 假如没有检索到(主表)数据,结束循环处理
Exit when c_test_main%NOTFOUND;

dbms_output.put_line(TO_CHAR(v_main_data.id)
|| ':' || v_main_data.value );

END LOOP;
-- 关闭游标
CLOSE c_test_main;
END;本回答被提问者和网友采纳
相似回答