Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Oracle PL/SQL中异常高级特性示例解析大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

pl/sql(Procedural Language/sql,过程语言/sql)是结合了Oracel过程语言和结构化查询语言(sql)的一种扩展语言。

优点:

(1)pl/sql具有编程语言的特点,它能把一组sql语句放到一个模块中,使其更具模块化种序的特点。

(2)pl/sql可以采用过程性语言控制程序的结构。

(3)pl/sql有自动处理的异常处理机制。

(4)pl/sql程序块具有更好的可移植性,可移植到另一个Oracle数据库中

(5)pl/sql程序减少了网络的交互,有助于提高程序性能。

在Oraclepl/sqL语句块中exception的异常处理部分是非常重要的组成部分,它决定了在pl/sqL语句块内部可执行部分在发生异常错误时,程序是友好地提示:程序遇到某些错误而无法执行,还是抛出一堆难以理解的Oracle内部错误码。

  本文只介绍3种pl/sql异常的三种高级形态,用于解决Oracle内置异常过少,很多时候不能够满足实际的使用需求。

1,RAISE_APPliCATION_ERROR

̳5;- 是Oracle提供的一种特殊的内置过程,允许程序员为特定的程序创建有意义的错误消息,适用于用户自定义定义异常。
̳5;- 语法结构
̳5;̳5;RAISE_APPliCATION_ERROR (error_number,error_messagE);或者
̳5;̳5;RAISE_APPliCATION_ERROR (error_number,error_message,keep_errors)
̳5;̳5;- error_number 是与特定错误消息关联的错误编号,Oracle预留了-20999 -- -20000专门提供给程序员自定义错误代码。
̳5;̳5;- error_message 是错误消息文本,最多包含2048个字符。
̳5;̳5;- keep_errors 是可选的Boolean参数,默认为falSE,如果为TRUE,新抛出的错误会被添加到已抛出的错误列表中,这个错误列表称为错误栈,如果为falSE,新错误会替换已抛出的错误栈。
̳5;- 适用于未命名的用户定义异常,负责把错误编号和错误消息关联,用户定义了异常,却没有定义该错误的名称
̳5;- 使用RAISE_APPliCATION_ERROR过程,程序员能够遵循与Oracle一致的方式返回错误消息

 - 示例代码

div class="codecode">
 0 then
  SELEct ename,sal into v_name,v_sal from emp where empno = v_ID;
  DBMS_output.put_line(chr(10)||v_name||' '||v_sal);
 else
  raise_application_error (-20001,'employee ID can not be negative.');
 end if;
exception
 when NO_DATA_FOUND then
  DBMS_output.put_line(chr(10)||'there is no such employee ID is '||v_ID); 
end;
/
Enter value for p_ID: 40
old 2: v_id number := &p_ID;
new 2: v_id number := 40;

there is no such employee ID is 40

pl/sql procedure successfully completed.
/
Enter value for p_ID: -90
old 2: v_id number := &p_ID;
new 2: v_id number := -90;
declare

  • ERROR at line 1:
    ORA-20001: employee ID can not be negative.
    ORA-06512: at line 11

大佬总结

以上是大佬教程为你收集整理的Oracle PL/SQL中异常高级特性示例解析全部内容,希望文章能够帮你解决Oracle PL/SQL中异常高级特性示例解析所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: