- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle11g第09讲存储过程及自定义函数(异常)要点
--存储过程的定义 默认in
Create or Replace Procedure 过程名(变量名 [in,out,inout] 数据类型)
[is,as]
--自定义变量
Begin
End [过程名];
--自定义函数的定义 默认in
Create or Replace Function 函数名(变量名 [in,out,inout] 数据类型)
Return 数据类型
[is,as]
自定义变量
Begin
Return 值;
End [函数名];
Create function XXX(saljia number) return number
As
Begin
………………… Sal+20
end
select XXX(sal) from emp;
函数调用限制
1、SQL语句中只能调用函数
2、SQL只能调用带有输入参数,不能带有输出,输入输出函数
3、SQL不能使用PL/SQL的特有数据类型(boolean,table,record等)
4、SQL语句中调用的函数不能包含INSERT,UPDATE和DELETE语句
异常错误处理
一个优秀的程序都应该能够正确处理各种出错情况,并尽可能从错误中恢复。ORACLE 提供异常情况(EXCEPTION)和异常处理(EXCEPTION HANDLER)来实现错误处理。
异常处理概念
异常情况处理(EXCEPTION)是用来处理正常执行过程中未预料的事件,程序块的异常处理预定义的错误和自定义错误,由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会自动终止整个程序运行.
有三种类型的异常错误:
预定义 ( Predefined )错误
ORACLE预定义的异常情况大约有24个。对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。
非预定义 ( Predefined )错误
即其他标准的ORACLE错误。对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发。
用户定义(User_define) 错误
程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况的处理,需要用户在程序中定义,然后显式地在程序中将其引发。
异常处理部分一般放在 PL/SQL 程序体的后半部,结构为:
EXCEPTION
WHEN first_exception THEN code to handle first exception
WHEN second_exception THEN code to handle second exception
WHEN OTHERS THEN code to handle others exception
END;
异常处理可以按任意次序排列,但 OTHERS 必须放在最后.
§5.1.1 预定义的异常处理
预定义说明的部分 ORACLE 异常错误
错误号 异常错误信息名称 说明 ORA-0001 Dup_val_on_index 试图破坏一个唯一性限制 ORA-0051 Timeout-on-resource 在等待资源时发生超时 ORA-0061 Transaction-backed-out 由于发生死锁事务被撤消 ORA-1001 Invalid-CURSOR 试图使用一个无效的游标 ORA-1012 Not-logged-on 没有连接到ORACLE ORA-1017 Login-denied 无效的用户名/口令 ORA-1403 No_data_found SELECT INTO没有找到数据 ORA-1422 Too_many_rows SELECT INTO 返回多行 ORA-1476 Zero-divide 试图被零除 ORA-1722 Invalid-NUMBER 转换一个数字失败 ORA-6500 Storage-error 内存不够引发的内部错误 ORA-6501 Program-error 内部错误 ORA-6502 Value-error 转换或截断错误 ORA-6504 Rowtype-mismatch 缩主游标变量与 PL/SQL变量有不兼容行类型 ORA-6511 CURSOR-already-OPEN 试图打开一个已存在的游标 ORA-6530 Access-INTO-null 试图为null 对象的属性赋值 ORA-6531 Collection-is-null 试图将Exists 以外的集合( collection)方法应用于一个null pl/sql 表上或varray上 ORA-6532 Subscript-out
文档评论(0)