エラーハンドラを呼び出したエラーのスタックトレースを返します。
sa_error_stack_trace( )
カラム名 | データ型 | 説明 |
---|---|---|
StackLevel | UNSIGNED SMALLINT | スタックの行番号 (1 番上の行が 1)。エラーを生成した文が最も大きい番号となります。 |
UserName | CHAR(128) | 現在のレベルがバッチにある場合のプロシージャの所有者名または NULL。 |
ProcName | CHAR(128) | 文が実行されたプロシージャまたはバッチタイプの名前。 |
LineNumber | UNSIGNED INTEGER | プロシージャ内の呼び出しの行番号。 |
IsResignal | BIT | 文が送り返された場合は 1。それ以外の場合は 0。 |
結果セットの各ローは、エラーの呼び出しスタックの 1 回の呼び出しを表します。複合文がプロシージャ、ファンクション、トリガ、イベントのいずれの一部でもない場合は、プロシージャ名ではなく、バッチのタイプ (watcom_batch または tsql_batch) が返されます。
このプロシージャは、ERROR_STACK_TRACE 関数と同じ情報を返します。
なし
なし。
この例は、sa_error_stack_trace システムプロシージャの呼び出しの例を示しています。
CALL sa_error_stack_trace(); |
この例は、RESIGNAL による sa_error_stack_trace システムプロシージャの出力を示しています。
CREATE OR REPLACE PROCEDURE error_reporting_procedure() BEGIN SELECT * FROM sa_error_stack_trace(); END; CREATE OR REPLACE PROCEDURE proc1() BEGIN TRY BEGIN TRY DECLARE v INTEGER = 0; SET v = 1 / v; END TRY BEGIN CATCH CALL proc2(); END CATCH END TRY BEGIN CATCH CALL error_reporting_procedure(); END CATCH; CREATE OR REPLACE PROCEDURE proc2() BEGIN CALL proc3(); END; CREATE OR REPLACE PROCEDURE proc3() BEGIN RESIGNAL; END; CALL proc1(); |
上記の例を実行すると、次の結果セットが生成されます。
StackLevel | UserName | ProcName | LineNumber | IsResignal |
---|---|---|---|---|
1 | DBA | proc1 | 8 | 0 |
2 | DBA | proc2 | 3 | 0 |
3 | DBA | proc3 | 3 | 1 |
4 | DBA | proc1 | 5 | 0 |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |