oracle存储过程游标问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 22:59:14
create or replace procedure test_yang_3
is
type t_cursor is ref cursor;
mycur t_cursor;
--id integer;
--name varchar(20);
yang_02 test_yang_02%rowtype;
--定义游标和变量
begin
open mycur for select a.id,a.name from test_yang_1 a;
--打开游标并提取后面SQL的第一行数据放到游标中
fetch mycur into yang_02;
--提取所有行数据
while mycur%found loop
--循环
insert into test_yang_02 values
(yang_02.id,yang_02.name);
--插入第一行数据
fetch mycur into yang_02;
--循环插入数据
end loop;
--结束循环
close mycur;
--关闭游标
end;
本人初学oracle,编写了个简单的存储过程。请高手看下我哪里的解释不对。帮忙修正下。
其中第一个fetch mycur into yang_02;我的解释最不确定,请高手指点下

--打开游标并提取后面SQL的第一行数据放到游标中 这里就是打开游标
open for 是隐式游标的写法 不建议使用 这种游标好象不需要关闭 具体你自己测试下 而且少了expection 处理

fetch mycur into yang_02;
--循环插入数据
多余了 可以不要 前面有fetch了如果还有这里的话 就只能插入奇数行
其他没什么问题了 还有你这个过程用ref cursor是浪费 没必要用 用简单的显示游标更好点

fetch mycur into yang_02;
把游标mycur 所提取的数据yang_02变量