• oracle自定义异常


    oracle 自定义异常~~
     
    DECLARE
    v_ename emp.ename%TYPE;
    BEGIN
    SELECT ename INTO v_ename FROM emp WHERE sal = &v_sal;
    dbms_output.put_line( '雇员名:' || v_ename);
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    dbms_output.put_line( '不存在工资为' || v_sal || '雇员');
    WHEN OTHERS THEN
    dbms_output.put_line( '错误号' || SQLCODE );
    dbms_output.put_line( SQLERRM);
    END;
     
    ---------------------------------
    --自定义异常处理
    CREATE OR REPLACE PROCEDURE stu_proc
    (
    --多个用逗号隔开
    v_id IN NUMBER
    ) IS
    --多个用分号隔开
    v_max_id NUMBER;
    v_name VARCHAR2(20);
    v_raise EXCEPTION;
    BEGIN
    SELECT MAX(a.id) INTO v_max_id FROM student a;
    IF v_id>v_max_id THEN
    RAISE v_raise;
    END IF;
    SELECT o.sname INTO v_name FROM student o WHERE o.id=v_id;
    dbms_output.put_line('学生名称为:'||v_name);
    EXCEPTION
    WHEN v_raise THEN
    RAISE_APPLICATION_ERROR(-20010, 'v_id not exists!');
    WHEN NO_DATA_FOUND THEN
    RAISE_APPLICATION_ERROR(-20011, 'ERROR:不存在!');
    END stu_proc;
     
    下面是常见的异常信息:
    --命名的系统异常     产生原因
    access_into_null    未定义对象
    case_not_found     case中若未包含相应的when,并且没有设置
    collection_is_null    集合元素未初始化
    curser_already_open    游标已经打开
    dup_val_on_index    唯一索引对应的列上有重复的值
    invalid_cursor     在不合法的游标上进行操作
    invalid_number    内嵌的 sql 语句不能将字符转换为数字 
    no_data_found     使用 select into 未返回行,或应用索引表未初始化的 
    too_many_rows     执行 select into 时,结果集超过一行
    zero_divide     除数为 0
    subscript_beyond_count    元素下标超过嵌套表或varray的最大值
    subscript_outside_limit   使用嵌套表或 varray 时,将下标指定为负数
    value_error     赋值时,变量长度不足以容纳实际数据
    login_denied     pl/sql 应用程序连接到 oracle 数据库时,提供了不正确的用户名或密码      确的用户名或密码
    not_logged_on     pl/sql 应用程序在没有连接 oralce 数据库的情况下访问数据      问数据
    program_error     pl/sql 内部问题,可能需要重装数据字典& pl./sql系统包     统包
    rowtype_mismatch          主游标变量与 pl/sql 游标变量的返回类型不兼容
    self_is_null     使用对象类型时,在 null 对象上调用对象方法
    storage_error     运行 pl/sql 时,超出内存空间
    sys_invalid_id     无效的 rowid 字符串
    timeout_on_resource    oracle 在等待资源时超时
      
    -------------------------------------------------------------------------
     
     
    判断一个字符串是不是日期的函数:
     
    CREATE OR REPLACE FUNCTION f_is_date(parameter VARCHAR2 ) RETURN NUMBER IS
    /*
      判断指定字符串是否为日期
    */
      val DATE;
    BEGIN
      val := TO_DATE(NVL(parameter, 'a'), 'yyyy-mm-dd hh24:mi:ss' );
      RETURN 1;
    EXCEPTION
      WHEN OTHERS THEN
        RETURN 0 ;
    END;
     
     
     
     
     
     
     
     
     
     
    生命的意义在于勇敢,错过,悔恨,真实之后的 风轻云淡。
  • 相关阅读:
    .NET程序运行原理及基本概念详解
    c# 操作Redis的五种基本类型总结
    手写MQ框架(一)-准备启程
    手写MVC框架(二)-代码实现和使用示例
    手写DAO框架(七)-如何保证连接可用
    spring cloud入门
    maven学习整理
    mybatis入门学习
    spring事务使用探究
    微内核OS学习
  • 原文地址:https://www.cnblogs.com/safely-pointer/p/4598912.html
Copyright © 2020-2023  润新知