oracle中cursor和异常

1.游标Cursor
在写java程序中有集合的概念,那么在pl/sql中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据。
语法:
  CURSOR 游标名 [ (参数名 数据类型,参数名 数据类型,...)] IS SELECT 语句;
例如:cursor c1 is select ename from emp;

游标的使用步骤:

  • 打开游标:       open c1;     ( 打开游标执行查询 )
  • 取一行游标的值: fetch c1 into pjob; ( 取一行到变量中 )
  • 关闭游标:        close  c1; ( 关闭游标释放资源 )
  • 游标的结束方式    exit when c1%notfound
  • 注意: 上面的 pjob 必须与 emp 表中的 job 列类型一致:
            定义: pjob emp.empjob%type;
 
演示:带参数的游标使用,和循环
一段PL/SQL程序,为部门号为10的员工涨工资。
 
 1 declare
 2   cursor pc(dno myemp.deptno%type) is
 3   select empno from myemp where deptno = dno;
 4   pno myemp.empno%type;
 5  
 6 begin
 7   open pc(20);
 8   loop
 9   fetch pc
10   into pno;
11   exit when pc%notfound;
12   update myemp t set t.sal = t.sal + 1000 where t.empno = pno;
13   end loop;
14   close pc;
15  
16 end;

 

 
2.异常
 
异常是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性。
系统定义异常
no_data_found (没有找到数据)
too_many_rows (select …into语句匹配多个行)
zero_divide ( 被零除
value_error (算术或转换错误)
timeout_on_resource (在等待资源时发生超时)
 
用户也可以自定义异常,在声明中来定义异常
DECLARE
My_job   char(10);
v_sal   emp.sal%type;
No_data    exception;
cursor c1 is select distinct job from emp    order by job;
如果遇到异常我们要抛出raise no_data;
 
 1 if语句和抛出异常
 2 if pemp%notfound then
 3     raise no_emp_found;
 4 end if;
 5  
 6 elsif语句写法
 7 if ...
 8 elsif...
 9 else...
10 end if;

 

 

转载于:https://www.cnblogs.com/anzhi/p/7515945.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值