我在oracle pl sql中有一个脚本,其中包含多个sql命令(创建,插入...),当某个命令抛出错误时我会抓住异常。
在我的例外中,我想显示命令的实际文本,我想知道是否存在存储最后一个命令的文本的局部变量,或者是否是将该文本存储在我创建的变量中的方法。登记/>
sql * plus中的一种方式也可以提供帮助
例如:
log
答案 0 :(得分:0)
http://www.oracle.com/technetwork/issue-archive/2014/14-jan/o14plsql-2045346.html
如上面的链接所述,您应该使用DBMS_UTILITY.FORMAT_CALL_STACK
要打印它,您可以执行DBMS_OUTPUT.PUT_LINE (DBMS_UTILITY.FORMAT_CALL_STACK);
答案 1 :(得分:0)
set serveroutput on;
declare
consumers_rec consumers%rowtype;
id_no number := 30;
begin
select * into consumers_rec from consumers where CONSUMER_ID=id_no;
dbms_output.put_line('CONSUMER_NAME' || consumers_rec.CONSUMER_NAME);
EXCEPTION
when no_data_found then
dbms_output.put_line('When input is :' || id_no);
dbms_output.put_line('ERROR MESSAGE:' || "SQLERRM" );
dbms_output.put_line('SQLCODE:' || SQLCODE);
end;
/
您会看到如下输出:
anonymous block completed
When input is :30
ERROR MESSAGE:ORA-01403: no data found
SQLCODE:100