`
123003473
  • 浏览: 1067262 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

PRAGMA EXCEPTION_INIT用法

 
阅读更多
如果要处理未命名的内部异常,必须使用OTHERS异常处理器或PRAGMA EXCEPTION_INIT 。PRAGMA由编译器控制,或者是对于编译器的注释。PRAGMA在编译时处理,而不是在运行时处理。EXCEPTION_INIT告诉编译器将异常名与ORACLE错误码结合起来,这样可以通过名字引用任意的内部异常,并且可以通过名字为异常编写一适当的异常处理器。
  
  在子程序中使用EXCEPTION_INIT的语法如下:
  PRAGMA EXCEPTION_INIT(exception_name, -Oracle_error_number);
  
  在该语法中,异常名是声明的异常,下例是其用法:
  DECLARE
  deadlock_detected EXCEPTION;
  PRAGMA EXCEPTION_INIT(deadlock_detected, -60);
  BEGIN
  ... -- Some operation that causes an ORA-00060 error
  EXCEPTION
  WHEN deadlock_detected THEN
  -- handle the error
  END;
  
  对于用户自定义异常,只能在PL/SQL块中的声明部分声明异常,异常的名字由EXCEPTION关键字引入:
  reserved_loaned Exception
  
  产生异常后,控制传给了子程序的异常部分,将异常转向各自异常控制块,必须在代码中使用如下的结构处理错误:
  Exception
  When exception1 then
  Sequence of statements;
  When exception2 then
  Sequence of statements;
  When others then

1.        在PL/SQL 块的定义部分定义异常情况:

<异常情况> EXCEPTION;


2.        将其定义好的异常情况,与标准的ORACLE错误联系起来,使用EXCEPTION_INIT语句:

      PRAGMA EXCEPTION_INIT(<异常情况>, <错误代码>);

3.        在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理。

【转载】 http://hi.baidu.com/ziyou121/blog/item/6c15667e066ab53f0cd7da9e.html
分享到:
评论

相关推荐

    Oracle 存储过程异常处理.docx

    对于内部异常,可以使用 OTHERS 异常处理器或 PRAGMA EXCEPTION_INIT 告诉编译器将异常名与 Oracle 错误码结合起来。对于用户自定义异常,只能在 PL/SQL 块中的声明部分声明异常。 在子程序中使用 EXCEPTION_INIT ...

    异常处理的相关知识与实例

    下面通过几个具体的示例来进一步了解异常处理的使用方法: ##### 示例1:处理数据不存在的情况 ```sql set serveroutput on declare v_ename emp.ename%type; begin select ename into v_ename from emp where ...

    Oracle PLSQL入门知识.doc

    使用`PRAGMA EXCEPTION_INIT`可以将自定义异常与特定的Oracle错误号关联。 6. 单条记录查询: 在PL/SQL中,可以使用SELECT ... INTO语句查询单条记录并直接赋值给变量。如果查询结果为空,会抛出NO_DATA_FOUND异常...

    oracle异常处理

    2. 使用 `PRAGMA EXCEPTION_INIT` 将异常与特定的 Oracle 错误号关联。 3. 在异常处理部分捕获并处理异常。 以下是一个使用非预定义异常处理 `ORA-02291`(违反完整性约束)的例子: ```sql DECLARE e_integrity ...

    ORACLE之常用问题解答

    在PL/SQL中,可通过`PRAGMA EXCEPTION_INIT`初始化自定义异常,以及使用`RAISE_APPLICATION_ERROR`显式抛出异常。例如: ```plsql PRAGMA EXCEPTION_INIT(exception_name, error_number); RAISE_APPLICATION_ERROR...

    pdo的操作吧pdo的操作吧

    本篇文章将深入探讨PDO的使用方法及其重要性。 首先,我们需要了解如何在PHP中安装和启用PDO扩展。通常,在Linux服务器上,可以通过`apt-get install php-pdo`或`yum install php-pdo`命令来安装。在Windows环境下...

    createtable.rar_oracle

    PRAGMA EXCEPTION_INIT(table_exists, -955); --ORA-00955错误表示表已存在 BEGIN EXECUTE IMMEDIATE 'CREATE TABLE my_table (id INT PRIMARY KEY)'; EXCEPTION WHEN table_exists THEN DBMS_OUTPUT.PUT_LINE('...

    PLSQL入门教程.doc

    同时,可以通过PRAGMA EXCEPTION_INIT自定义异常,将特定的Oracle错误号与自定义异常关联,这样在出现这些错误时,可以直接调用自定义的异常处理。 除了预定义异常,用户还可以创建自定义异常,这增强了程序的灵活...

    如何从Oracle的存储过程中访问操作系统的资源.pdf

    PRAGMA EXCEPTION_INIT(EXCEP, -20000); BEGIN EXECUTE IMMEDIATE 'BEGIN ' || LANGUAGE_JAVA || '.' || JAVA_METHOD || '(' || IN_path || '); END;'; EXCEPTION WHEN EXCEP THEN DBMS_OUTPUT.PUT_LINE('An ...

    oracle异常和游标管理.pptx

    非预定义的异常是针对特定Oracle错误代码的,可以通过`PRAGMA EXCEPTION_INIT`指令将自定义异常与特定的Oracle错误号关联。用户定义的异常则是程序员根据需要在PL/SQL程序中声明的新异常,它们可以在需要的地方用`...

    oracle

    用户可以使用`EXCEPTION`声明创建自定义异常,并通过`PRAGMA EXCEPTION_INIT`初始化它们;系统异常则由Oracle系统引发,通常不可预测。 ### 3. 游标(Cursors) 游标是PL/SQL中处理记录集的重要工具,允许逐行访问...

    Oracle中实现continue的方法

    PRAGMA EXCEPTION_INIT(e_userdefinedexception, -1401); BEGIN LOOP radius := radius + 1; BEGIN IF radius = 4 THEN RAISE e_userdefinedexception; -- 手动引发异常 ELSE area := pi * POWER(radius,...

    oracle学习必备资料

    4. **自定义异常**:在PL/SQL中,可以使用`PRAGMA EXCEPTION_INIT`预定义异常,并通过`RAISE_APPLICATION_ERROR`来抛出自定义错误。自定义错误号应处于`-20000`到`-20999`之间,同时可以传递错误信息。 5. **数值...

    sql语句大全

    PRAGMA EXCEPTION_INIT(exception_name, error_number); RAISE_APPLICATION_ERROR(error_number, error_msg, true | false); ``` 其中`error_number`是从-20000到-20999的范围内的数字,而`error_msg`的最大长度为...

    关于pl/sql常量和变量

    PRAGMA EXCEPTION_INIT(invalid_input, -20001); input_value NUMBER := -1; BEGIN IF input_value RAISE invalid_input; ELSE DBMS_OUTPUT.PUT_LINE('Valid Input'); END IF; EXCEPTION WHEN invalid_...

    PLSQL教程.doc

    PRAGMA EXCEPTION_INIT(BAD_ROWID, -01445); -- 初始化自定义异常 BEGIN SELECT ROWID INTO x FROM TAB WHERE ROWNUM = 1; EXCEPTION WHEN BAD_ROWID THEN DBMS_OUTPUT.PUT_LINE('CANNOT QUERY ROWID FROM THIS ...

    Oracle8i_9i数据库基础

    §16.4.2.2 使用户EXCEPTION_INIT处理 286 §16.4.2.3 使用户raise_application_error处理 286 第十七章 创建包和使用包 287 §17.1 引言 287 §17.2 包的定义 288 §17.3 包的开发步骤 289 §17.4 包的头部说明 289...

Global site tag (gtag.js) - Google Analytics