包含sql命令/语句的实际文本的变量

时间:2017-05-08 15:57:23

标签: sql oracle plsql

我在oracle pl sql中有一个脚本,其中包含多个sql命令(创建,插入...),当某个命令抛出错误时我会抓住异常。
在我的例外中,我想显示命令的实际文本,我想知道是否存在存储最后一个命令的文本的局部变量,或者是否是将该文本存储在我创建的变量中的方法。登记/> sql * plus中的一种方式也可以提供帮助 例如:

log

2 个答案:

答案 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)

您可以使用SQLERRM函数,如下所示:

 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