Orcale _day03 光标

光标(cursor)

cursor  游标名 

定义光标

cursor  光标名称 is select 要用光标查询的列 from  查询的表 

open   光标名字

close  光标名字

光标属性 

%isopen   %rowcount 影响行数  

             %found    %notfound 是否有 值

-- 查询并打印
/**
光标的属性: %isopen   %rowcount 影响行数  
             %found    %notfound  
*/
declare 
  -- 定义了光标(游标)
  cursor cemp is select ename,sal from emp ; 
  pename emp.ename%type  ;
  psal emp.sal%type ;
  
begin
  -- 打开
  open cemp  ;
  
  loop 
       -- 取出当前记录  
       fetch cemp into pename,psal ; 
       -- 没有取到记录退出
       exit when cemp%notfound ; 
      
       dbms_output.put_line(pename||'的薪水是'||psal);
  
  end loop ; 
  close cemp ; 
  -- 关闭 
end;
加薪问题
-- 给不同额员工涨工资
declare
 -- 定义光标 
 cursor cemp is select empno,job from emp ;
 -- 定义引用变量
 pempno emp.ename%type ;               
 pjob  emp.job%type ; 
  

begin
   -- 把之前的事务没有提交的回滚掉
  rollback ; 
  -- 打开
  open cemp ; 
       --开启循环
       loop 
         fetch cemp into pempno,pjob ; 
         exit when cemp%notfound ;
          end loop  ;
         -- 判断职位 
          if pjob='CLERK' then update emp set sal=sal+1000 where empno=empno ;
             elsif pjob=' MANAGER' then update emp set sal=sal+800 where empno=empno ;
             else update emp set sal=sal+400 where empno=empno ;
           end if ;
       -- 结束循环
     
  -- 关闭
  close cemp ; 
  
  -- 提交事务   -- why  ? ?  oracle 默认的隔离级别,read_commit   ACID 两个客户端, 
  commit  ; 
    dbms_output.put_line('加薪完毕老板!'); 
end;
带参数的光标  
-- 带参数的光标
declare 
  -- 创建带参数的指针
 cursor cemp(dno number) is select ename from emp where deptno=dno; 
 -- 定义一个和ename类型的变量
 pename emp.ename%type ; 
  
begin
 --  打开指针
 open cemp(20) ;
 -- 循环 
      loop 
        fetch cemp into pename ; 
        -- 退出条件
        exit when cemp%notfound;
        -- 打印输 出 
        dbms_output.put_line(pename);
      end loop ; 
 -- 结束指针
 close cemp; 
end;

1.定义指针

cursor  cursorname(parm) is from  列名  for  表名  where 条件 ;

open  指针名字(传参)

调动指针 fetch  指针名字  into 列名

close  指针名字;









  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值