FORMAT_ERROR_BACKTRACE 関数 - 直近のエラー発生時の呼び出しスタックの説明を返す

FORMAT_ERROR_BACKTRACE 関数は、現行セッション中に SQL ルーチンで直近のエラーが発生したときの呼び出しスタックの状態を表すタイプ VARCHAR(32672) のストリングを返します。

構文図を読む構文図をスキップするDBMS_UTILITY.FORMAT_ERROR_BACKTRACE ()

許可

結果の各行は、エラー発生時の呼び出しスタック上のアクティブ・ルーチンの説明です。最後に呼び出されたルーチンが最初の行に示され、それより前に呼び出されたルーチンは続きの行に示されます。 すなわち、先頭に最も深くネストされたルーチン、次にそのルーチンの呼び出し元、次にその呼び出し元の呼び出し元 (以降同様) と続く、エラー発生時の呼び出しチェーンが結果に記述されます。

現行セッション中にエラーが発生した SQL ルーチンがない場合、この関数は NULL を返します。

呼び出しスタックの各行の先頭は、ルーチンの先頭行 (行 1) からの相対位置を示す行番号です。そのルーチンの行番号情報を取得できない場合、その行はハイフン (「-」) で示されます。

行番号の後に、ルーチン・タイプがプロシージャー、関数、トリガー、または無名ブロック (コンパウンド・ステートメント) として示されます。 外部ルーチンも示されますが、外部プロシージャーと外部関数との間の区別はされません。 外部ルーチンの場合は、行番号情報を取得できません。

ルーチン・タイプに続いて、ルーチン・スキーマ、モジュール名 (該当する場合)、ルーチン名、そしてサブルーチン名 (該当する場合) からなる完全修飾ルーチン名が示されます。ルーチンの完全修飾名の後に、その特定名が報告されます。 特定名のスキーマは報告されず、完全修飾ルーチン名に含まれるものと同じと見なされます。

DBMS_UTILITY モジュールに対する EXECUTE 特権。

以下に示す、ネストされた呼び出しシナリオでは、エラーが返されます。
create table T1(C1 integer, C2 integer, tag varchar(32)) @ 
insert into T1 values (1, 6, 'VI'), (2, 10, 'X'), (3, 11, 'XI'), (4, 48, 'XLVIII') @ 

create or replace procedure B( 
in colname varchar(128), 
in value integer, 
in tag varchar(32)) 
language SQL 
begin 
declare stmt_text varchar(256); 
declare S1 statement; 

set stmt_text = 'update T1 set tag = ? where ' || colname || ' = ?'; 
prepare S1 from stmt_text; 
execute S1 using tag, value; 
end @ 

create or replace procedure A() 
begin 
call B('C1', 1, 'six'); 
call B('C2', 11, 'eleven'); 
call B('C3', 0, 'zero'); -- will produce an error 
call B('C2', 48, 'forty-eight'); 
end @ 

begin 
call A; 
end @ 
Db21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: 
SQL0206N "C3" is not valid in the context where it is used. SQLSTATE=42703 
エラーの発生後、FORMAT_ERROR_BACKTRACE は、以下のような情報を返します。
values dbms_utility.format_error_backtrace() 

1 
-----------------------------------------------------------------------//-- 
11 procedure MYSCHEMA.B (specific SQL150217153622825); SQLCODE=-206 
5 procedure MYSCHEMA.A (specific SQL150217153623026) 
2 anonymous block (specific SQL150217153624330) 

1 record(s) selected.