ORACLE PL/SQL异常处理(Exception)学习笔记
September 1st, 2011
No comments
1、PL/SQL错误类型
错误类型 |
报告者 |
处理方法 |
编译时错误 |
PL/SQL编译器 |
交互式地处理:编译器报告错误,你必须更正这些错误 |
运行时错误 |
PL/SQL运行时引擎 |
程序化地处理:异常由异常处理子程序引发并进行捕获 |
错误类型 |
报告者 |
处理方法 |
编译时错误 |
PL/SQL编译器 |
交互式地处理:编译器报告错误,你必须更正这些错误 |
运行时错误 |
PL/SQL运行时引擎 |
程序化地处理:异常由异常处理子程序引发并进行捕获 |
(注释:仅适用于Oracle数据库10g)
具体示例如下:
CREATE OR REPLACE PROCEDURE top_logging IS
demo number;
begin
select * into demo from dual;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(dbms_utility.format_error_backtrace());
END top_logging;
/
SQL> exec TOP_LOGGING;
ORA-06512: 在 "SYS.TOP_LOGGING", line 4
|
我们在写PL/SQL存储过程定义字符型参数类型时一般都是varchar2,做为输入参数超过1333个英文字符串(测试得:1回车相当于3英文,1汉字相当于2英文)时就报trailing null missing from STR bind value。
解决此问题我们可以定义参数类型为long型,我们数据库表结构定义为varchar2(4000)时输入少于4000的字符串就不会再报这错。