免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3930 | 回复: 1
打印 上一主题 下一主题

[分享] 游标的使用之变量定义 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-21 12:51 |只看该作者 |倒序浏览
本帖最后由 linux_kaige 于 2012-11-21 15:03 编辑

1. 原表:
select * from zuojia;

PNAME        PSALARY        PSEX
yk1           2000        男
yk2           2111        男
yk3           2200        男
yk4           2300        男
yk5           2400        男
yk6           2500        男
yk7           2600        男
yk8           2700        男
yk9           3000        男
yk10          3000        男

2. 使用游标进行判断,对大于2700的,都变成3000 :
--declare
--v_salary zuojia.psalary%TYPE;--使v_salary的类型与zuojia的psalary字段类型一样。其中变量有常见的number、char类型外,还有记录型、表型、引用型、lob型和用户自定义类型。
create or replace procedure pro_cursor_zuojia as
v_salary number;
v_name zuojia.pname%type;
cursor c_zuojia is
select pname,psalary
from zuojia;
begin
  open c_zuojia;
  loop
    fetch c_zuojia into v_name,v_salary;
    exit when c_zuojia%notfound;
    if v_salary >2700 then
      update zuojia set zuojia.psalary=3000
      where zuojia.pname=v_name;
      end if;
      end loop;
   close c_zuojia;
commit;
end;


set serveroutput on size 999;
exec pro_cursor_zuojia;
select * from zuojia;


3. 同作用sql:
update zuojia set psalary=3000 where psalary>2700;

4.使用plsql程序块,可以增加一些判断逻辑、流程控制语句,使程序更加灵活。

5.其中游标还有四个布尔属性,%FOUND,%NOTFOUND,%ISOPEN,ROWCOUNT。只能用于过程语句中,不能用于sql语句中。



论坛徽章:
5
天蝎座
日期:2014-01-23 12:27:392015亚冠之德黑兰石油
日期:2015-05-14 13:33:042015年亚洲杯之乌兹别克斯坦
日期:2015-03-06 14:10:38天秤座
日期:2014-01-24 15:03:052015亚冠之德黑兰石油
日期:2015-08-27 13:43:58
2 [报告]
发表于 2012-11-27 12:23 |只看该作者
这是自学的成果吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP