oracle存储过程,如何获得详细的错误信息
存储过程示例如下:createorreplaceprocedureproc_test(strAgeinstring,strNameinstring,ret_codeout...
存储过程示例如下:
create or replace procedure proc_test( strAge in string, strName in string, ret_code out string, v_error_message out string) is
begin
declare
strsql varcchar(1024);
begin
strsql :='select name from student where age=100';
execute immediate strsql using strAge ;
strsql :='select age from teacher where name=jill';
execute immediate strsql using strName ;
ret_code:=0;
v_error_message:='OK';
EXCEPTION
WHEN OTHERS THEN
ret_code := sqlcode;
v_error_message := sqlerrm;
rollback;
end;
end proc_cancel_digital_id;
上面的存储过程是例子。
上面的任何一个select执行时,如果查不到数据都会抛异常。数据库返回码是100,找不到数据。
但是我想获得详细的错误信息,到底是上面的student找不到记录,还是teacher表找不到记录,请问这里要怎么做?谢谢 展开
create or replace procedure proc_test( strAge in string, strName in string, ret_code out string, v_error_message out string) is
begin
declare
strsql varcchar(1024);
begin
strsql :='select name from student where age=100';
execute immediate strsql using strAge ;
strsql :='select age from teacher where name=jill';
execute immediate strsql using strName ;
ret_code:=0;
v_error_message:='OK';
EXCEPTION
WHEN OTHERS THEN
ret_code := sqlcode;
v_error_message := sqlerrm;
rollback;
end;
end proc_cancel_digital_id;
上面的存储过程是例子。
上面的任何一个select执行时,如果查不到数据都会抛异常。数据库返回码是100,找不到数据。
但是我想获得详细的错误信息,到底是上面的student找不到记录,还是teacher表找不到记录,请问这里要怎么做?谢谢 展开
3个回答
展开全部
create or replace procedure proc_test( strAge in string, strName in string, ret_code out string, v_error_message out string) is
begin
declare
strsql varcchar(1024);
v_error_desc varcchar(1024);
begin
v_error_desc :='student';
strsql :='select name from student where age=100';
execute immediate strsql using strAge ;
v_error_desc :='teacher';
strsql :='select age from teacher where name=jill';
execute immediate strsql using strName ;
ret_code:=0;
v_error_desc :='OK';
v_error_message:='OK';
EXCEPTION
WHEN OTHERS THEN
ret_code := sqlcode;
v_error_desc := '错误位置:' || v_error_desc;
v_error_message := sqlerrm;
rollback;
end;
end proc_cancel_digital_id;
begin
declare
strsql varcchar(1024);
v_error_desc varcchar(1024);
begin
v_error_desc :='student';
strsql :='select name from student where age=100';
execute immediate strsql using strAge ;
v_error_desc :='teacher';
strsql :='select age from teacher where name=jill';
execute immediate strsql using strName ;
ret_code:=0;
v_error_desc :='OK';
v_error_message:='OK';
EXCEPTION
WHEN OTHERS THEN
ret_code := sqlcode;
v_error_desc := '错误位置:' || v_error_desc;
v_error_message := sqlerrm;
rollback;
end;
end proc_cancel_digital_id;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-04-01
展开全部
推荐你去猎豹IT网校上,有个oracle视频教程,看看是否学一下自己就能处理了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用Oracle的企业管理器EM,在那个里面运行PL/SQL就能看到错误的具体信息了
追问
我这个存储过程是c语言调用的,我希望错误能够定位更准确一些,是查询那个表的时候错误了,这样可以C语言获得存储过程的返回信息,输出到日志,将来定位时很方便。
追答
你上网找找返回Oracle异常信息ORA号的函数吧,找到ORA号就能找到相应的错误信息了,具体怎么弄没试过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |