ページの先頭行へ戻る
Symfoware Server V10.0.0/V10.0.1 アプリケーション開発ガイド(埋込みSQL編)

7.2.2 SQL_SNAP機能の利用方法

SQL_SNAP機能は、アプリケーションが実行したSQL文の情報を、ファイルに出力します。このファイルをスナップファイルといいます。この情報により、アプリケーションのデバッグ時に、SQL文が正しく動いているかどうかを確認することができます。

SQL_SNAP機能を利用するには、クライアント用の動作環境ファイルにSQL_SNAPパラメタを設定します。

参照

クライアント用の動作環境ファイルの作成については、“アプリケーション開発ガイド(共通編)”を参照してください。

次にSQL_SNAPパラメタの指定の例を示します。

1

出力レベル1のデバッグ情報を、SQLSNAP.LSTに出力します。

SQL_SNAP = (ON,SQLSNAP.LST,1)

2

繰り返し幅を指定して、デバッグ情報をSQLSNAP.LSTに出力します。

SQL_SNAP =  ( ON,SQLSNAP.LST,1,100 )
                                ↑
                            繰り返し幅  (1)

(1) 繰り返し幅を指定すると、実行したSQL文の情報を、指定した繰り返し幅でファイルに出力できます。これにより、必要な分だけの情報が取得できます。繰り返し幅の量を超えた時点で出力ファイルを再作成します。

たとえば、100を指定した場合は、100個のSQL文情報をファイルに出力した時点で、次のSQL文情報をファイルの先頭に出力します。

SQL_SNAP機能の出力形式

SQL_SNAP機能で出力される情報は、出力レベルの指定によって異なります。

1および2はシステム単位でスナップファイルを出力する場合に指定します。PRC1およびPRC2はプロセス単位でスナップファイルを出力する場合に指定します。

なお、出力されるSQL文は、アプリケーションに記述したものと同一ではありません。コンパイル・リンク時に加工したものが出力されます。

また、複数のアプリケーションが動作する場合は、クライアント用の動作環境ファイルの実行パラメタ(DIV_TRACE_FILE)の指定により、出力ファイル名の後にプロセスIDなどの情報を付加して、個別のトレース情報を出力します。

アプリケーションがマルチスレッド環境で動作する場合は、DIV_TRACE_FILEの指定に関係なく、出力ファイル名の後にプロセスIDやセションIDなどの情報を自動的に付加して、個別のトレース情報を出力します。

出力レベルの指定と出力情報の対応を以下に示します。

表7.1 出力レベルの指定と出力情報の対応

出力する情報

出力レベル

1

2

PRC1

PRC2

アプリケーション名

SQL文 (注1)

カーソル情報

ホスト変数情報(注2)

SQLSTATE

SQL文の処理時間

メッセージ

注1)SQL文名のみ出力します。

注2)ホスト変数の属性(ATTRIBUTE)とデータ(VALUES)を出力します。ホスト変数の属性(ATTRIBUTE)は次のように表示されます。

表7.2 ATTRIBUTEとホスト変数のデータ型の対応表

ホスト変数の属性

(ATTRIBUTE)

ホスト変数のデータ型

CHAR(n)

固定長で長さn文字の文字列型

VCHAR(n)

可変長で長さ最大n文字の文字列型

NCHAR(n)

固定長で長さn文字の日本語文字列型

NVCHAR(n)

可変長で長さ最大n文字までの日本語文字列型

NUMERIC

桁数p、小数点以下q桁のゾーン形式10進数型( NUMERIC(p,q) )

DECIMAL

桁数p、小数点以下q桁のパック形式10進数型 ( DECIMAL(p,q) )

SMALLINT

-215~215-1の整数型

INTEGER

-231~231-1の整数型

LONG

-263~263-1の整数型

FLOAT

4バイトの浮動小数点数型

DOUBLE

8バイトの浮動小数点数型

BLOB

バイナリ属性のデータ型 (SQL TYPE IS BLOB)

ROW_ID

ROW_ID型

レベル1を指定した場合

出力レベルに1を指定した場合は、以下の情報が出力されます。

SQL-SNAP START 14:01:13 (1)   04/18 (2)  APPLICATION : sample1 (3)
STATEMENT : CONNECT                              (4)
SQLSTATE : 00000                                 (5)
SQLMSG   : JYP2001I 正常に終了しました.         (6)
SQL-SNAP END   14:01:16 (7)   (00:00:03.204000)  (8)

SQL-SNAP START 14:01:16       04/18      APPLICATION : sample1
STATEMENT : OPEN                                 (9)
CURSOR NAME : 会社名取出                         (10)
CURSOR      : SELECT DISTINCT 会社名 FROM BUSINESS.取引先会社,BUSINESS.発注,BUS
              INESS.在庫 WHERE 取引先会社.取引先番号=発注.取引先番号 AND 取引製
              品番号=製品番号 AND  製品名=?      (11)
SQLSTATE : 00000
SQLMSG   : JYP2001I 正常に終了しました.
SQL-SNAP END   14:01:17      (00:00:00.867000)

SQL-SNAP START 14:01:17      04/18      APPLICATION : sample1
STATEMENT : FETCH                               (12)
CURSOR NAME : 会社名取出                        (13)
SQLSTATE : 00000
SQLMSG   : JYP2001I 正常に終了しました.
SQL-SNAP END   14:01:17      (00:00:00.055000)
                              :

(1) SQL文の実行を開始した時刻(時:分:秒)を示します。

(2) SQL文の実行を開始した日付(月/日)を示します。

(3) 実行したアプリケーションの名前を示します。

(4) 実行したSQL文の種類を示します。ここでは、CONNECT文を実行したことを示します。

(5) SQL文の実行後にSQLSTATEに通知された状態コードを示します。ここでは、CONNECT文の実行結果として、状態コード“00000”がSQLSTATEに通知されたことを示します。

(6) SQL文の実行後にSQLMSGに通知されたメッセージ内容を示します。ここでは、CONNECT文の実行結果として、メッセージ“JYP2001I 正常に終了しました.”がSQLMSGに通知されたことを示します。

(4)~(6)は、1つのSQL文の実行情報です。1つのSQL文の実行情報は、SQL-SNAP START と SQL-SNAP ENDの間に表示されます。

(7) SQL文の実行を終了した時刻(時:分:秒)を示します。

(8) SQL文の開始から終了までの経過時間(時:分:秒)を示します。

(9) カーソルのOPEN文を実行したことを示します。

(10) オープンしたカーソル名を示します。ここでは“会社名取出”を示します。

(11) カーソルの探索条件を示します。

(12) FETCH文を実行したことを示します。

(13) FETCH文を実行したカーソル名を示します。ここでは“会社名取出”を示します。

レベル2を指定した場合

出力レベルに2を指定した場合は、以下の情報が出力されます。

SolarisLinuxSolaris/Linuxの場合

SQL-SNAP START 14:01:13 (1)   04/18 (2)  APPLICATION : sample1 (3)
STATEMENT : CONNECT                             (4)
CONNECTION INFORMATION                          (5)
       001 : <SQL-SERVER>       : SV1
       002 : <USER-NAME>        : USER1/PASS1
SQLSTATE : 00000                                (6)
SQLMSG   : JYP2001I 正常に終了しました.        (7)
SQL-SNAP END   14:01:16 (8)  (00:00:03.204000)  (9)

SQL-SNAP START 14:01:16       04/18      APPLICATION : sample1

STATEMENT : OPEN                                (10)
CURSOR NAME : 会社名取出                        (11)
CURSOR      : SELECT DISTINCT 会社名 FROM BUSINESS.取引先会社,BUSINESS.発注,BUS
              INESS.在庫 WHERE 取引先会社.取引先番号=発注.取引先番号 AND 取引製
              品番号=製品番号 AND  製品名=?     (12)
INPUT VARIABLE                                  (13)
       001 : ATTRIBUTE  NCHAR(10)                                            (14)
  0000(00000) a5c6a5ec a5d3a1a1  a1a1a1a1 a1a1a1a1  *  テレビ              * (14)
  0010(00016) a1a1a1a1                              *                      * (14)
SQLSTATE : 00000
SQLMSG   : JYP2001I 正常に終了しました.
SQL-SNAP END   14:01:17      (00:00:00.867000)

SQL-SNAP START 14:01:17       04/18      APPLICATION : sample1
STATEMENT : FETCH                               (15)
CURSOR NAME : 会社名取出                        (16)
OUTPUT VARIABLE                                 (17)
       001 : ATTRIBUTE  NCHAR(10)                                            (18)
  0000(00000) a5a2a5a4 a5c7a5a2  bea6bbf6 a1a1a1a1   *  アイデア商事       * (18)
  0010(00016) a1a1a1a1                               *                     * (18)
SQLSTATE : 00000
SQLMSG   : JYP2001I 正常に終了しました.
SQL-SNAP END   14:01:17      (00:00:00.055000)
                              :

(1) SQL文の実行を開始した時刻(時:分:秒)を示します。

(2) SQL文の実行を開始した日付(月/日)を示します。

(3) 実行したアプリケーションの名前を示します。

(4) 実行したSQL文の種類を示します。ここでは、CONNECT文を実行したことを示します。

(5) 実行したCONNECT文のコネクション情報を示します。ここでは、コネクション情報として、SQLサーバ名“SV1”およびユーザ指定“USER1/PASS1”を示します。

(6) SQL文の実行後にSQLSTATEに通知された状態コードを示します。ここでは、CONNECT文の実行結果として、状態コード“00000”がSQLSTATEに通知されたことを示します。

(7) SQL文の実行後にSQLMSGに通知されたメッセージ内容を示します。ここでは、CONNECT文の実行結果として、メッセージ“JYP2001I 正常に終了しました.”がSQLMSGに通知されたことを示します。

(4)~(7)は、1つのSQL文の実行情報です。1つのSQL文の実行情報は、SQL-SNAP START と SQL-SNAP ENDの間に表示されます。

(8) SQL文の実行を終了した時刻(時:分:秒)を示します。

(9) SQL文の開始から終了までの経過時間(時:分:秒)を示します。

(10) カーソルのOPEN文を実行したことを示します。

(11) オープンしたカーソル名を示します。ここでは“会社名取出”を示します。

(12) カーソルの探索条件を示します。

(13) カーソルに対する入力のホスト変数を示します。

(14) カーソルに対する入力のホスト変数の属性とデータの内容を16進数で示します。ここでは、ホスト変数“製品名”の属性とデータを示します。

(15) FETCH文を実行したことを示します。

(16) FETCH文を実行したカーソル名を示します。ここでは“会社名取出”を示します。

(17) FETCH文により位置づけた行に対する出力のホスト変数を示します。

(18) FETCH文に指定した出力のホスト変数の属性とデータの内容を16進数で示します。ここでは、ホスト変数“会社名”の属性と内容を示します。