问题描述
嗨,
当我传递一个输入参数时,我有一个存储过程。使用该输入参数,如果有no_data_found,那么我正在尝试在该错误日志表中存储no_data_found错误,但我无法做到这一点。请在下面找到我的代码,
存储过程:
使用另一个错误日志过程 (xxcct_error_logs) 将值存储到表中,但始终以正常,成功完成的方式存储。
请建议如何通过调用error_logs过程来存储no_data_found错误。
萨克斯。
当我传递一个输入参数时,我有一个存储过程。使用该输入参数,如果有no_data_found,那么我正在尝试在该错误日志表中存储no_data_found错误,但我无法做到这一点。请在下面找到我的代码,
存储过程:
create or replace procedure dumm_proc (p_opportunity_number cct_opportunity.opportunity_number%type) as v_oppo_id varchar2(50); l_message varchar2(50) := sqlerrm; l_code varchar2(50) := sqlcode; begin select opportunity_id into v_oppo_id from cct_opportunity where opportunity_number = p_opportunity_number; exception when no_data_found then xxcct_error_logs(cct_error_seq.nextval,null,v_oppo_id,null,null,l_message,l_code,'dumm_proc',null,sysdate,user,sysdate,user); raise; when others then xxcct_error_logs(cct_error_seq.nextval,null,v_oppo_id,null,null,l_message,l_code,'dumm_proc',null,sysdate,user,sysdate,user); raise; end;
使用另一个错误日志过程 (xxcct_error_logs) 将值存储到表中,但始终以正常,成功完成的方式存储。
请建议如何通过调用error_logs过程来存储no_data_found错误。
萨克斯。
专家解答
您可以在过程开始时将值分配给l_code和l_message。当一切都好的时候。所以当你在异常处理程序中引用这些时,它们仍然有这些值!
要获取错误信息,您需要在异常块本身中调用sqlerrm和sqlcode:
要获取错误信息,您需要在异常块本身中调用sqlerrm和sqlcode:
declare l_message varchar2(50) := sqlerrm; l_code varchar2(50) := sqlcode; begin dbms_output.put_line(l_code || ' ' || l_message); raise no_data_found; exception when no_data_found then dbms_output.put_line(l_code || ' ' || l_message); dbms_output.put_line(sqlcode || ' ' || sqlerrm); end; / 0 ORA-0000: normal, successful completion 0 ORA-0000: normal, successful completion 100 ORA-01403: no data found
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。