Oracle学习之常用对象(三)—异常&变量&存储过程

来源:互联网 发布:mac笔记本配置交换机 编辑:程序博客网 时间:2024/06/08 01:36

这一章,我们谈谈变量,异常和存储过程。对他们的使用语法进行描述。

1、一般变量
  DECLARE
    --声明变量
    V_NAME    VARCHAR2(30);
    V_ADDRESS VARCHAR2(60);
    V_PHONE   NUMBER;
  BEGIN
    V_NAME := 'mayun'; --初始化变量
  END;

2、记录型变量
  DECLARE
  TYPE peopleinfo IS RECORD
  (
       v_name VARCHAR2(30),
       v_address VARCHAR2(50),
       v_phone NUMBER
  );

  v_people_1 peopleinfo;--定义变量

3、ROWTYPE类型
  v_people peopleinfo%ROWTYPE;--表peopleinfo中所有字段组成的类型
  v_people_1 peopleinfo.name%TYPE;--表peopleinfo中name字段的类型

二、异常处理
首先,异常处理是为了处理我们可能遇到的问题。异常有预定义异常、非预定义还有用户自定义异常。
1、ORACLE预定义的异常情况大约有24个。对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。
2、非预定义异常即其他标准的ORACLE错误。对这种异常情况的处理,需要用户在程序中定义,
然后由ORACLE自动将其引发。
3、用户定义异常是程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况的处理,需要用户在程序中定义,
然后显式地在程序中将其引发。
平时,我用到的异常不多,常用的是预定义异常,其他的接触不多。
4、预定义实例
  DECLARE
    V_RESULT NUMBER;
    V_EXCP   VARCHAR2(50);
  BEGIN
    V_RESLUT := 100 / 0;
  EXCEPTION
    WHEN ZERO_DIVIDE THEN
      V_EXCP := '除数为零!';
  END;
5、非预定义实例
  DECLARE
    V_EXCP VARCHAR2(50);
    V_NAME VARCHAR2(20);
    2291_EXCP EXCEPTION; --定义异常情况
    PRAGMA EXCEPTION_INIT(MY_2291_EXP, -2291); --把异常名称跟错误号关联
  BEGIN
    V_NAME := 'mayun';
    UPDATE PEOPLEINFO SET NAME = V_NAME;
  EXCEPTION
    WHEN 2291_EXCP THEN
      V_EXCP := '违反完整性约束,未找到父项关键字';
      ROLLBACK;
  END;

三、存储过程
存储过程是我们经常用到的数据处理方式,基本语法如下,具体处理的逻辑在代码块中实现。
    /*创建存储过程*/
    CREATE PROCEDURE SP_PEOPLEINFO(ACCT_MONTH VARCHAR2 IN,
                                   V_RPT      VARCHAR2 OUT) IS
  BEGIN
    V_SQL VARCHAR2(500);

    V_SQL := 'create table test(t_id varcahr2(20),t_name varcahr2(30))';
    V_SQL := 'drop table test';
  END;
  /*删除存储过程*/
    DROP PROCEDURE SP_PEOPLEINFO;


1 0
原创粉丝点击