zoukankan      html  css  js  c++  java
  • 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;
     
  • 相关阅读:
    【设计模式】备忘录
    统计ip的发送频率和该ip发送的有效消息(去除相似消息)的数目
    Android之消息推送聊天实现
    Dictionary通过下标获取key和value
    SGU 271 水题。。。。
    二叉树递归和非递归遍历
    C#与SSL
    正则表达式总结
    SQL Server User Accounts
    嵌入式领域中各种文件系统的比较
  • 原文地址:https://www.cnblogs.com/anzhi/p/7515945.html
Copyright © 2011-2022 走看看