PL/sql学习

1、PLSQL块中直接嵌入SQL的SELECT语句取数据时,必须添加Exception,否则如果是多行数据
   或者没有数据,就会报TOO_MANY_ROWS或 NO_DATA_FOUND错误并最终传递到环境中
   WHERE子句中使用变量时须注意变量名不能与列名相同,否则会触发TOO_MANY_ROWS例外
2、SQL游标属性(SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT,SQL%ISOPEN):根据是否有作用行判断
3、两种CASE控制结构
   a、当条件是单一条件并且是相等条件时运用
      CASE  selector
      WHEN  condition  THEN exp1;
      WHEN  condition  THEN exp2;
      ELSE  EXP3;
      END CASE;
   b、多种不同条件判断
      CASE
      WHEN  condition1  THEN  exp1;
      WHEN  condition1  THEN  exp2;
      ELSE  EXP3
      END CASE;
4、显式游标
   可以使用显式游标更新或删除数据。这时,显式游标必须要带有For Update子句
   cursor cursor_name is select ...  for update [of column] [nowait];
   update table_name set column = ... where current of cursor_name;
   delete table_name where current of cursor_name;
5、游标FOR循环
   FOR  record_name IN cursor_name/子查询 LOOP
   END LOOP;
6、非预定义例外及自定义例外
   EG:
        DECLARE
             e_integrity        EXCEPTION;
             PRAGMA             EXCEPTION_INTI(e_integrity, -2291);
             e_no_employee      EXCEPTION;
        BEGIN
             UPDATE emp SET deptno=&dno WHERE empno=&eno;
             IF  SQL%NOTFOUND THEN
                 RAISE e_no_employee;
             END IF;
        EXCEPTION
             WHEN e_integrity THEN
                  dbms_output.put_line('该部门不存在');
             WHEN e_no_employee THEN
                  dbms_output.put_line('该雇员不存在');
        END;
7、RAISE_APPLICATION_ERROR(error_number, msg)
   error_number范围为在-20000 ---- -20999 之间
   该过程只能在数据库段的子程序中使用,而不能再匿名块和客户端的子程序中使用
   该消息的长度不能超过2048字节
8、编译PLSQL时,可以使用打开/关闭警告
   plsql_warnings
   alter system set plsql_warnings='ENABLE:ALL'
   alter system set plsql_warnings='DISABLE:ALL'
9、再SQLPLUS中使用输出参数
   sql>  var name varcharw(10)
   sql>  var salary number
   sql>  exec query_emp(7788, :name, :salary);
   sql>  print name salary

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值