Hitachi

ノンストップデータベース HiRDB Version 10 SQLリファレンス


6.24.1 DECLARE AUDIT INFO SETの形式と規則

〈この項の構成〉

(1) 機能

HiRDBサーバにアクセスするアプリケーションのアカウント情報など,ユーザ任意の接続情報を設定します。設定したユーザ任意接続情報は解除するまで有効となり,SQL実行時にHiRDBサーバの監査証跡に出力されます。

(2) 形式

 DECLARE AUDIT INFO SET  POS=:埋込み変数,
                INF=:埋込み変数〔:標識変数〕

(3) オペランド

(a) POS=:埋込み変数

情報を設定したいユーザ付加情報の番号をINTEGER型の埋込み変数で指定します。各ユーザ付加情報に該当する番号は次のとおりです。

  • 1:ユーザ付加情報1

  • 2:ユーザ付加情報2

  • 3:ユーザ付加情報3

(b) INF=:埋込み変数〔:標識変数〕

ユーザ任意接続情報をVARCHAR型(領域長100バイト以内)の埋込み変数で指定します。設定済みの情報を解除する場合は,ナル値を指定してください。ユーザ任意接続情報にはユーザ付加情報1〜3があり,それぞれ監査証跡に出力されます。

既定文字集合以外の文字集合は指定できません。

(4) 共通規則

  1. 使用する埋込み変数は,埋込み変数宣言節で宣言してください。

  2. エラーコードはSQLCODEに返されます。

  3. ユーザ任意接続情報が既に設定されている状態でDECLARE AUDIT INFO SET を再度実行した場合は,設定済みのユーザ任意接続情報が更新されます。

  4. 設定したユーザ任意接続情報は,DECLARE AUDIT INFO SETでナル値を指定して解除するまで有効です。DECLARE AUDIT INFO SETで設定したユーザ任意接続情報の有効範囲を,次の図に示します。

    図6‒6 DECLARE AUDIT INFO SETで設定したユーザ任意接続の有効範囲

    [図データ]

  5. CONNECT実行前にDECLARE AUDIT INFO SETでユーザ任意接続情報を設定した場合は,CONNECT時にその情報が引き継がれます。

  6. ユーザ任意接続情報が設定されている状態でDISCONNECTを実行しても,ユーザ任意接続情報は解除されません。解除する場合は,INFにナル値を指定してDECLARE AUDIT INFO SETを実行してください。

  7. 複数接続時は,接続ハンドル単位でユーザ任意接続情報を設定してください。

(5) 留意事項

  1. CONNECT文の実行時には,ユーザ任意接続情報は監査証跡に出力されません。

(6) 使用例

(例1)ユーザ任意接続情報(ユーザ付加情報1〜3)を埋込み変数で指定して設定します。

EXEC SQL BEGIN DECLARE SECTION ;
SQL TYPE IS VARCHAR(100) udata ;
long pos ;
EXEC SQL END DECLARE SECTION ;
 
strcpy(udata.str,"userA") ;
udata.len = strlen(udata.str) ;
pos = 1;
EXEC SQL DECLARE AUDIT INFO SET POS=:pos, INF=:udata ;
strcpy(udata.str," user data B ") ;
udata.len = strlen(udata.str) ;
pos = 2;
EXEC SQL DECLARE AUDIT INFO SET POS=:pos, INF=:udata ;
strcpy(udata.str," user data C ") ;
udata.len = strlen(udata.str) ;
pos = 3;
EXEC SQL DECLARE AUDIT INFO SET POS=:pos, INF=:udata ;

(例2)ユーザ任意接続情報(ユーザ付加情報1〜3)の設定内容を解除します。

EXEC SQL BEGIN DECLARE SECTION ;
SQL TYPE IS VARCHAR(100) udata ;
long pos ;
short ind ;
EXEC SQL END DECLARE SECTION ;
 
ind = -1;
pos = 1;
EXEC SQL DECLARE AUDIT INFO SET POS=:pos, INF=:udata:ind ;
pos = 2;
EXEC SQL DECLARE AUDIT INFO SET POS=:pos, INF=:udata:ind ;
pos = 3;
EXEC SQL DECLARE AUDIT INFO SET POS=:pos, INF=:udata:ind ;