select * from tb_grade t for update
--1普通游标(显示游标)
declare
--定义游标 用于查询表结构的数据集
cursor grade_cursor is select cname from tb_grade;
--定义行变量 可以是 游标%rowtype 也可以是 表%rowtype
grade_row grade_cursor%rowtype;
begin
--打开游标
open grade_cursor;
loop
--通过游标抓取一行
fetch grade_cursor into grade_row;
--判断游标是否到了最后一行
exit when grade_cursor%notfound;
--逻辑语句应该在exit when之后
syso(grade_row.cname);
end loop;
--关闭游标
close grade_cursor;
end;
--2引用游标(动态游标)(显示游标)
declare type dyncCursor is ref cursor;
cursor_tmp dyncCursor;
grade_row tb_grade%rowtype;
begin
--打开游标
open cursor_tmp for select * from tb_grade;
loop
--通过游标抓取一行
fetch cursor_tmp into grade_row;
--判断游标是否到了最后一行
exit when cursor_tmp%notfound;
--逻辑语句应该在exit when之后
syso(grade_row.cname);
end loop;
--关闭游标
close cursor_tmp;
end;
--3带参数游标
declare
--定义游标 用于查询表结构的数据集
cursor grade_cursor(id1 number) is select cname from tb_grade where cid=id1;
--定义行变量 可以是 游标%rowtype 也可以是 表%rowtype
grade_row grade_cursor%rowtype;
begin
--打开游标
open grade_cursor(4);
loop
--通过游标抓取一行
fetch grade_cursor into grade_row;
--判断游标是否到了最后一行
exit when grade_cursor%notfound;
--逻辑语句应该在exit when之后
syso(grade_row.cname);
end loop;
--关闭游标
close grade_cursor;
end;
--隐式游标 oracle负责帮程序 打开关闭抓取游标 常用的方式
declare
cursor grade_cursor is select cname from tb_grade;
begin
for stu_tmp in grade_cursor loop
syso(stu_tmp.cname);
end loop;
end;
--普通for循环输出表记录行
/**
List list=new ArrayList();
int count=list.size();
for(int v=0;v<count;v++){
V v=list.get(v);
}
**/
declare rowco number;
rowdata tb_grade%rowtype;
begin
select count(rowid) into rowco from tb_grade;
for(v in 1..rowco) loop
select * into rowdata from tb_grade where rownum=v;
syso(rowdata.cname);
end loop;
end;
Oracle游标的使用方法以及使用for循环实现游标的原理
最新推荐文章于 2024-10-12 16:19:55 发布