Oracle中用游标更新字段值的面试题

如下表

SQL> set pagesize 60;
SQL> run;
  1* select * from employee

NAME           SALARY
---------- ----------
SMITH             800
ALLEN            1600
WARD             1250
JONES            2975
MARTIN           1250
BLAKE            2850
CLARK            2450
SCOTT            3000
KING             5000
TURNER           1500
ADAMS            1100
JAMES             950
FORD             3000
MILLER           1300

已选择14行。


在这个表如果SALARY列小于2500 就加20%。这个很简单,但是要用把游标用进去就要如下思考了:

先建个游标,遍历这个表在这个条件的数据。

 

SQL>  create or replace procedure emp_test
  2  is
  3   v_name employee.name%type;
  4   v_sal employee.salary%type;
  5   cursor cursor_sal is
  6   select name,salary from employee where salary<2500;
  7   begin
  8   open cursor_sal ;
  9   loop
 10   fetch cursor_sal into v_name,v_sal;
 11   exit when cursor_sal%notfound;
 12   update employee set salary=salary*1.2 where name=v_name;
 13   end loop;
 14   close cursor_sal;
 15   end;
 16   /

过程已创建。
SQL> set serveroutput on ;
SQL> exec emp_test;

PL/SQL 过程已成功完成。

SQL> select * from employee;

NAME           SALARY
---------- ----------
SMITH          1382.4
ALLEN            1920
WARD             1500
JONES            2975
MARTIN           1500
BLAKE            2850
CLARK            2940
SCOTT            3000
KING             5000
TURNER           1800
ADAMS            1320
JAMES            1368
FORD             3000
MILLER           1560

已选择14行。



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值