12-8 游标的基本使用

游标(重点)
1.定义游标(declear)->打开游标-》使用游标-》关闭游标
declare
  cursor c is select * from emp;  --结果集可以是任意查询语句的结果
  --定义一个可以接收使用C中值的变量
  v_emp c%rowtype;
begin
--打开游标
  open c;
--使用
  fetch c into v_emp;
  v_emp.sal:=v_emp.sal+200;
  dbms_output.put_line('工资是:'||v_emp.sal||'是:'||v_emp.ename);
--关闭
  close c;
end;
2.遍历游标
使用游标遍历输出显示10部门所有员工的姓名
declare
  cursor c is select ename from emp where deptno=10;
  v_ename c%rowtype;
begin
  open c;
  loop
   fetch c into v_ename;
   exit when(c%notfound); --没取到记录时退出 
   dbms_output.put_line('员工姓名是:'||v_ename.ename);  --注意以上3句的顺序
   --先取再判断,若取到就显示,若没取到就推出
  end loop;
  close c;
end;

改写为while遍历
declare
  cursor c is select ename from emp where deptno=10;
  v_ename c%rowtype;
begin
  open c;
  fetch c into v_ename;  --先取一条
  while(c%found) loop    --判断是否取到
   dbms_output.put_line('员工姓名是:'||v_ename.ename); --先显示再取
   fetch c into v_ename;
  end loop;
  close c;
end;

使用for loop遍历游标
declare
  cursor c is select ename from emp where deptno=10;
  --v_ename c%rowtype;
begin
  --open c;
  for v_ename in c loop    --自己声明一个接收c值的变量
                           --自己open c fetch c into ename
                           --自动判断是否取到
                           --结束,自动close c
   dbms_output.put_line('员工姓名是:'||v_ename.ename); 
   --fetch c into v_ename;
  end loop;
  --close c;
end;

推荐使用for:
declare
  cursor c is select ename from emp where deptno=10;
begin
 for v_ename in c loop
   dbms_output.put_line('员工姓名是:'||v_ename.ename);
 end loop;
end;


根据用户输入的部门编号输出符合条件的员工姓名极其工资
declare
  cursor c is select ename,sal from emp where deptno=&部门编号,;
begin
 for v_emp in c loop
   dbms_output.put_line('员工姓名是:'||v_emp.ename||'工资为:'||v_emp.sal);
 end loop;
end;


根据用户输入的部门编号及其工作输出符合条件的员工姓名极其工资


declare
  cursor c is select ename,sal from emp where deptno=&部门编号 and job=upper('&工作'); 
                                                        --工作是字符串型,所以要加''
begin
 for v_emp in c loop
   dbms_output.put_line('员工姓名是:'||v_emp.ename||'工资为:'||v_emp.sal);
 end loop;
end;





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值