
游标用法

游标四步骤
1.cursor声明游标
2.open打开游标
3.FETCH...into...从游标中取值
4.close关闭游标

声明一个变量,从游标中取值
declare
--声明一个跟表名.字段名数据类型相同的变量,
起名叫names_cursor
names_cursor mbp_bomviewnode_partextend.cname%type;
--声明一个游标,游标中存储的是查询到的内容
cursor j_cursor1 is select cname from mbp_bomviewnode_partextend;
begin
--打开游标
open j_cursor1;
--从游标中拿一个数据到变量中
FETCH j_cursor1 into names_cursor;
dbms_output.put_line('第一次名字是'||names_cursor);
--在while循环之前必须要先进行FETCH操作,否则%found会返回false
while j_cursor1%found loop
dbms_output.put_line('名字是'||names_cursor);
fetch j_cursor1 into names_cursor;
end loop;
dbms_output.put_line('循环结束!');
--记得关闭游标
close j_cursor1;
end;

声明一个记录类型类型从游标中取值
declare
--声明一个记录类型,名字叫j_record
type j_record is record(
j_names varchar2(256),
j_csymbol varchar2(4000)
);
--声明一个记录类型的变量
j_records j_record;
--声明一个游标,游标中存储的是查询到的内容
cursor j_cursor2 is select cname,csymbol from mbp_bomviewnode_partextend;
begin
--打开游标
open j_cursor2;
--从游标中拿一个数据到变量中
FETCH j_cursor2 into j_records;
dbms_output.put_line('第一次名字是'||j_records.j_names|| '号码 '||j_records.j_csymbol );
--在while循环之前必须要先进行FETCH操作,否则%found会返回false
while j_cursor2%found loop
dbms_output.put_line('名字是'||j_records.j_names|| '号码 '||j_records.j_csymbol);
fetch j_cursor2 into j_records;
end loop;
dbms_output.put_line('循环结束!');
--记得关闭游标
close j_cursor2;
end;

游标FOR循环
用游标进行for循环可以省略后三步,即打开,fetch,关闭游标。
declare
cursor yb1 is select cname,csymbol from mbp_bomviewnode_partextend;
begin
for yb in yb1 loop
dbms_output.put_line('输出 '|| yb.csymbol);
end loop;
end;








