重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
sqlcode表示错误代码
目前创新互联公司已为1000+的企业提供了网站建设、域名、雅安服务器托管、网站改版维护、企业网站设计、大渡口网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
ora-01100
ora-09872
之类的
sqlerrm
表示错误信息
parallel
query
server
die
之类
insert
into
select
a
,b
,c
from
table;
commit;
-----------------------------
取得异常:
exception
when
others
then
vc_sqlcode
:=
sqlcode;
vc_sqlmsg
:=
substr(sqlerrm,2,100);
rollback;
end;
如果数据库是10g及以上版本,可以使用dbms_utility.format_error_backtrace(),这个函数能够返回错误行,可以套用以下格式:
create or replace procedure prc_test(参数) is
v_no number;
begin
select no into v_no from zrp;
exception
when others then
dbms_output.put_line('SQL CODE:'||sqlcode||chr(10)||
sqlerrm||chr(10)||
dbms_utility.format_error_backtrace());
end;
这样写的好处是,当程序发成异常,呗exception捕获后,就会打印出错误信息及发生错误的行号
begin
select into ......................;
exception
when errorException then
.................
when others then
..................
end;
通过如下代码:
public static String getExceptionAllinformation(Exception ex){
String sOut = "";
StackTraceElement[] trace = ex.getStackTrace();
for (StackTraceElement s : trace) {
sOut += "\tat " + s + "\r\n";
}
return sOut;
}
扩展资料:
注意事项
oracle存储过程,可以通过sqlcode 获取异常编码、通过sqlerrm获取异常信息。
例子:
create or replace procedure write2blob(p_id in number, --id
p_blob_data in blob,
p_msg out varchar2) --数据
is
v_lobloc blob; --目标blob
v_blob_data blob; --作为接受参数的字段,参数变量不能直接拿来赋值
v_amount binary_integer; --总长度
v_sub_length binary_integer; --一次读取的最大长度,不超过32766
v_sub_blob blob; --一次读取的子串
v_offset binary_integer; --游标
v_err_msg varchar2(1000);
v_id binary_integer; --要修改或新增的记录ID
v_temp binary_integer; --临时变量用于判断是否有v_id对应的记录begin
v_amount := length(p_blob_data);
v_blob_data := p_blob_data;
v_sub_length := 32767;
v_offset := 1;
v_id := p_id;
v_temp := 0; --execute immediate v_query_string into v_lobloc;
select count(1) into v_temp from a where id = v_id; --查询是否有v_id对应的记录,并且赋值给v_te/*注意:无论是修改还是新增,blob字段都需要用empty_blob()进行初始化,否则后边的blob内容,不能写进表里面。
一般写在存储过程处理异常。
exception
when others then
out_mes:=out_mes || '执行失败!因为'|| sqlcode || '错误' ;
out_mes你自己可以处理,插入日志表中 或作为输出参数。
好像是没有这个预定义变量,在PROC里面是可以的,那是C语言,
不过有变通的方法,可以参考一下