Oracle的游标和触发器

本文详细介绍了Oracle数据库中的游标概念,包括如何使用游标输出员工信息及进行复杂的业务操作。同时,文章讲解了异常处理,如各种类型的异常及自定义异常,并探讨了存储过程和存储函数的应用。接着,文章深入讨论了触发器,包括其分类、作用以及在数据校验和业务逻辑中的应用。最后,提到了序列在模拟ID自动增长中的使用和PLSQL编程的重要性。
摘要由CSDN通过智能技术生成
1.什么是游标

游标(光标): 是用来操作查询结果集,相当于是JDBC中ResultSet

语法: cursor 游标名[(参数名 参数类型)] is 查询结果集

开发步骤:
   1. 声明游标
   2. 打开游标    open 游标名
   3. 从游标中取数据  fetch 游标名 into 变量
          游标名%found :找到数据
          游标名%notfound : 没有找到数据 
   4. 关闭游标     close 游标名
   
系统引用游标
   1. 声明游标 : 游标名 sys_refcursor
   2. 打开游标: open 游标名 for 结果集
   3. 从游标中取数据
   4. 关闭游标
        
for循环遍历游标:
   不需要声明额外变量
   不需要打开游标
   不需要关闭游标      
  • 输出员工表中所有的员工姓名和工资(不带参数游标)
    • 游标:所有员工
    • 声明一个变量,用来记录一行数据 %rowtype
declare
 --游标
 cursor vrows is select * from emp;
 --s声明变量,记录一行数据
 vrow emp%rowtype;
begin
 --1.打开游标  
 open vrows;
 --2.从游标提取数据
 --循环取数据
 loop
     fetch vrows into vrow; 
     exit when vrows%notfound;  
  dbms_output.put_line('姓名:'||vrow.ename ||' 工资: ' || vrow.sal);
 end loop;
 --3.关闭游标
 close vrows;
end;
  • 输出指定部门下的员工姓名和工资
    • 游标: 指定部门的所有员工
    • 声明一个变量记录一行数据
declare
   --声明游标
   cursor vrows(dno number) is select * from emp where deptno = dno;
   --声明变量
   vrow emp%rowtype;
begin
  --1.打开游标 , 指定10号部门
  open vrows(10);
  --2. 循环遍历,取数据
  loop
     fetch vrows into vrow;
     exit when vrows%notfound;    
      dbms_output.put_line('姓名:'||vrow.ename ||' 工资: ' || vrow.sal);
  end loop;
  close vrows;
end;
  • 系统引用游标
    • 输出员工表中所有的员工姓名和工资
declare
 --声明系统引用游标
 vrows sys_refcursor;
 --声明一个变量
 vrow emp%rowtype;
begin
 --1.打开游标
 open vrows for select * from emp;
 --2.取数据
 loop
   fetch vrows into vrow;
   exit when vrows%notfound;
    dbms_output.put_line('姓名:'||vrow.ename ||' 工资: ' || vrow.sal);
 end loop;
 close vrows;
end;
  • 扩展内容----使用for循环遍历游标
declare
 --声明一个游标
 cursor vrows is select * from emp;
begin
 for vrow in vrows loop
    dbms_output.put_line('姓名:'||vrow.ename ||' 工资: ' || vrow.sal || '工作:'|| vrow.job);
 end loop;
end;

select * from emp;
  • 按照员工工作给所有员工涨工资,总裁涨1000,经理涨800,其他人涨400
    • 游标 : 所有员工
    • 声明一个记录一行数据
declare
 --声明游标
 c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值