oracle数据库的游标的使用方法

–1:任意执行一个 update操作,用隐式游标sql的属性%found,%notfound,
–%rowcount,%isopen观察update语句的执行情况。

declare
begin
update emp set ename = ‘SS’ where deptno = 10;
if sql%found then
dbms_output.put_line(‘更新’||sql%rowcount||’行数据’);
elsif sql%notfound then
dbms_output.put_line(‘没有更新任何数据’);
end if;
if sql%isopen then
dbms_output.put_line(‘游标处于打开状态’);
else
dbms_output.put_line(‘游标处于关闭状态’);
end if;
end;

–2: 使用游标和loop循环来显示所有部门的名称

declare
v_name dept.dname%type;

–定义游标

cursor cur_a is select dname from dept;
begin

–打开游标

open cur_a;
loop

–获取游标

fetch cur_a into v_name;
exit when cur_a%notfound;
dbms_output.put_line(v_name);
end loop;

–关闭游标

close cur_a;
end;

select * from dept;

–3:使用游标和while循环来显示所有部门的的地理位置(用%found属性)

declare
address dept.loc%type;

–定义游标

cursor cur_a is select loc from dept ;
begin

–打开游标

open cur_a;

–获取游标

fetch cur_a into address;
while cur_a%found
loop

–获取游标

dbms_output.put_line(address);

–获取游标

fetch cur_a into address;
end loop;

–关闭游标

close cur_a;
end;

–4:接收用户输入的部门编号,用for循环和游标,打印出此部门的所有雇员的所有信息(使用循环游标)
declare
–定义游标

cursor cur_a (id number)is select * from emp where deptno = id ;
begin
for i in cur_a(&nn)
loop
dbms_output.put_line(i.empno||’ ‘||i.ename||’ ‘||i.job||’ ‘||i.hiredate||’ ‘||i.deptno);
end loop;
end;

–5:向游标传递一个工种,显示此工种的所有雇员的所有信息(使用参数游标)
declare
–定义游标

cursor cur_a(v_job varchar2) is select * from emp where job = v_job;
nn emp.job%type;
e emp%rowtype;
begin

–打开游标

open cur_a(&nn);
loop

–获取游标

fetch cur_a into e;
exit when cur_a%notfound;
dbms_output.put_line(e.empno||’ ‘||e.ename||’ ‘||e.job||’ ‘||e.hiredate);
end loop;

–关闭游标

close cur_a;
end;

wkj9pvrhtaaamzihaaf0hhesne643

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部