プロシジャを利用するアプリケーションの場合は、サーバ側で動作するプロシジャのデバッグに、ROUTINE_SNAP機能を利用することができます。ROUTINE_SNAP機能は、プロシジャルーチンが実行したSQL文の情報を、サーバ上のファイルに出力します。このファイルをルーチンスナップファイルといいます。
ROUTINE_SNAP機能を利用するには、クライアント用の動作環境ファイルにROUTINE_SNAPパラメタを設定します。
指定形式については、“7.4.1 クライアント用の動作環境ファイルによる定義”を参照してください。
次に指定の例を示します。この例では、出力レベル1のデバッグ情報を、サーバ上のROUTINE1.LSTに出力します。
Solaris/Linuxの場合
ROUTINE_SNAP = (ON,/var/tmp/ROUTINE1.LST,1)
Windows(R)の場合
ROUTINE_SNAP = (ON,E:\VAR\TMP\ROUTINE1.LST,1)
ROUTINE_SNAP機能で出力される情報は、出力レベルの指定によって異なります。出力レベルの指定と出力情報の対応を以下に示します。
出力する情報 | 出力レベル | |
---|---|---|
1 | 2 | |
プロシジャルーチン名 | ○ | ○ |
SQL文(注) | ○ | ○ |
カーソル情報 | ○ | ○ |
ホスト変数情報 | - | ○ |
プロシジャルーチンの引数の値 | ○ | ○ |
SQLSTATE | ○ | ○ |
メッセージ | ○ | ○ |
プロシジャルーチンの処理時間 | ○ | ○ |
注)SQL文名のみ出力します。
複数のアプリケーションが動作する場合は、クライアント用の動作環境ファイルの実行パラメタ(DIV_TRACE_FILE)の指定により、出力ファイル名の後にプロセスIDなどの情報を付加して、個別のトレース情報を出力します。
アプリケーションがマルチスレッド環境で動作する場合は、DIV_TRACE_FILEの指定に関係なく、出力ファイル名の後にプロセスIDやセションIDなどの情報を自動的に付加して、個別のトレース情報を出力します。
レベル1を指定した場合
出力レベルに1を指定した場合は、以下の情報が出力されます。
ROUTINE-SNAP START 14:01:13 (1) 04/18 (2) ROUTINE-NAME : sample (3) STATEMENT : BEGIN (4) ROUTINE-SNAP END 14:01:13 (5) (00:00:00.000000) (6) ROUTINE-SNAP START 14:01:13 04/18 ROUTINE-NAME : sample STATEMENT : IF (7) ROUTINE-SNAP END 14:01:13 (00:00:00.000000) ROUTINE-SNAP START 14:01:13 04/18 ROUTINE-NAME : sample STATEMENT : OPEN (8) CURSOR NAME : 会社名取出 (9) SQLSTATE : 00000 (10) SQLMSG : JYP2001I 正常に終了しました. (11) ROUTINE-SNAP END 14:01:14 (00:00:00.867000) ROUTINE-SNAP START 14:01:14 04/18 ROUTINE-NAME : sample STATEMENT : FETCH (12) CURSOR NAME : 会社名取出 (13) SQLSTATE : 00000 SQLMSG : JYP2001I 正常に終了しました. ROUTINE-SNAP END 14:01:14 (00:00:00.055000)
(1) SQL文の実行の開始時刻(時:分:秒)を示します。
(2) SQL文の実行の日付(月/日)を示します。
(3) 実行したルーチンの名前を示します。
(4) 実行したSQL文の種類を示します。ここでは、SQL制御文の複合文(BEGIN)を実行したことを示します。
(5) SQL文の実行を終了した時刻(時:分:秒)を示します。
(6) SQL文の開始から終了までの経過時間(時:分:秒)を示します。
(7) 実行したSQL文の種類を示します。 ここでは、SQL制御文のIF文を実行したことを示します。
(8) カーソルのOPEN文を実行したことを示します。
(9) オープンしたカーソル名を示します。
(10) SQL文の実行後にSQLSTATEに通知された状態コードを示します。
(11) SQL文の実行後にSQLMSGに通知されたメッセージ内容を示します。
(12) FETCH文を実行したことを示します。
(13) FETCH文を実行したカーソル名を示します。
レベル2を指定した場合
出力レベルに2を指定した場合は、以下の情報が出力されます。
Solaris/Linuxの場合
ROUTINE-SNAP START 14:01:13 04/18 ROUTINE-NAME : sample STATEMENT : BEGIN ROUTINE-SNAP END 14:01:13 (00:00:00.000000) ROUTINE-SNAP START 14:01:13 (1) 04/18 (2) ROUTINE-NAME : sample (3) STATEMENT : IF (4) PARAMETER VALIABLE : (5) P1 NCHAR(10) 0000(00000) a5c6a5ec a5d3a1a1 a1a1a1a1 a1a1a1a1 * テレビ * (6) 0010(00016) a1a1a1a1 * * SQL VALIABLE : (7) V1 NCHAR(10) 0000(00000) a5c6a5ec a5d3a1a1 a1a1a1a1 a1a1a1a1 * テレビ * (8) 0010(00016) a1a1a1a1 * * ROUTINE-SNAP END 14:01:13 (9) (00:00:00.000000) (10) ROUTINE-SNAP START 14:01:13 04/18 ROUTINE-NAME : sample STATEMENT : OPEN CURSOR NAME : 会社名取出 PARAMETER VALIABLE (11) P1 NCHAR(10) 0000(00000) a5c6a5ec a5d3a1a1 a1a1a1a1 a1a1a1a1 * テレビ * (12) 0010(00016) a1a1a1a1 * * SQLSTATE : 00000 (13) SQLMSG : JYP2001I 正常に終了しました. (14) ROUTINE-SNAP END 14:01:14 (00:00:00.867000) ROUTINE-SNAP START 14:01:14 04/18 ROUTINE-NAME : sample STATEMENT : FETCH CURSOR NAME : 会社名取出 SQL VALIABLE : (15) V2 NCHAR(10) 0000(00000) a5a2a5a4 a5c7a5a2 bea6bbf6 a1a1a1a1 * アイデア商事 * (16) 0010(00016) a1a1a1a1 * * SQLSTATE : 00000 SQLMSG : JYP2001I 正常に終了しました. ROUTINE-SNAP END 14:01:14 (00:00:00.055000)
(1) SQL文の実行の開始時刻(時:分:秒)を示します。
(2) SQL文の実行の日付(月/日)を示します。
(3) 実行したルーチンの名前を示します。
(4) 実行したSQL文の種類を示します。 ここでは、SQL制御文のIF文を実行したことを示します。
(5) IF文で使用されたパラメタ変数のデータを表示します。ここでは、P1がパラメタ名で、NCHAR(10)がデータ型を示します。
(6) IF文に指定したパラメタ変数のデータの内容を16進数で表示します。
(7) IF文で使用されたSQL変数のデータを表示します。ここでは、V1がSQL変数名で、NCHAR(10)がデータ型を示します。
(8) IF文に指定したSQL変数のデータの内容を16進数で表示します。
(9) SQL文の実行を終了した時刻(時:分:秒)を示します。
(10) SQL文の開始から終了までの経過時間(時:分:秒)を示します。
(11) OPEN文で使用されたパラメタ変数のデータを表示します。ここでは、P1がパラメタ名で、NCHAR(10)がデータ型を示します。
(12) OPEN文で使用したパラメタ変数のデータの内容を16進数で表示します。
(13) SQL文の実行後にSQLSTATEに通知された状態コードを示します。
(14) SQL文の実行後にSQLMSGに通知されたメッセージ内容を示します。
(15) FETCH文で使用されたSQL変数のデータを表示します。ここでは、V2がSQL変数名で、NCHAR(10)がデータ型を示します。
(16) FETCH文に指定したSQL変数のデータの内容を16進数で表示します。