SET CURRENT SQL_CCFLAGS ステートメント

SET CURRENT SQL_CCFLAGS ステートメントは CURRENT SQL_CCFLAGS 特殊レジスターの値を変更します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。 このステートメントは、動的に作成できる実行可能ステートメントです。

許可

必要ありません。

構文

Read syntax diagramSkip visual syntax diagramSETCURRENT SQL_CCFLAGS=variablestring-constant

説明

variable
コンマで区切られた、名前と値から成る 1 つ以上の組を格納する変数を指定します。
この変数は次のような特性を持つ必要があります (SQLSTATE 42815):
  • データ・タイプが CHAR または VARCHAR でなければなりません。 変数の中身の実際の長さは、特殊レジスターの最大長を超えてはなりません。
  • ブランクから成るストリング、空ストリング、または 1 つ以上の名前/値の組のいずれかでなければなりません (名前と値の間はコロン文字で区切ります)。 名前は有効な通常 ID でなければなりません。 名前に関連付けられる値は、BOOLEAN 定数、INTEGER 定数、またはキーワード NULL でなければなりません。
  • 固定長の文字変数を使用する場合は、右側をブランクで埋め込む必要があります。
  • ストリングの最初または最後、コンマ文字の周囲、またはコロン文字の周囲に、余分のブランクを含めることができます。 ブランクは無視されます。
  • NULL 値にすることはできません。
ストリング定数
コンマで区切られた、名前と値から成る 1 つ以上の組を格納する文字ストリング定数を指定します。
このストリング定数は次のような特性を持つ必要があります (SQLSTATE 42815):
  • 文字ストリング定数でなければなりません。 定数の長さは、特殊レジスターの最大長を超えてはなりません。
  • ブランクから成るストリング、空ストリング、または 1 つ以上の名前/値の組のいずれかでなければなりません (名前と値の間はコロン文字で区切ります)。 名前は有効な通常 ID でなければなりません。 名前に関連付けられる値は、BOOLEAN 定数、INTEGER 定数、またはキーワード NULL でなければなりません。
  • ストリングの最初または最後、コンマ文字の周囲、またはコロン文字の周囲に、余分のブランクを含めることができます。 ブランクは無視されます。

  • CURRENT SQL_FLAGS 特殊レジスターの中に重複する名前が出現する場合、最後の (つまり最も右側にある) 値だけが使用されます。 重複する名前のうち、実際に使われる値を持つただ 1 つのオカレンスだけが特殊レジスター値に含まれることになります。 別の値を持つ重複名を CURRENT SQL_CCFLAGS 値に連結することにより、いくつかの条件付きコンパイル値をオーバーライドして、他の値をそのまま保持することができます。
  • CURRENT SQL_CCFLAGS が検索されるとき、戻されるストリングには固有の名前/値の組が大文字で含まれ、複数の組はコンマとブランクで区切られます。 組は指定されたとおりの順番で並べられ、重複名は最初のオカレンスだけが表示されますが、その値には最後のオカレンスの値が反映されます。
  • CURRENT SQL _CCFLAGS 特殊レジスターを、データベースに関して定義されたデフォルトに設定することができます。そうするには、NAME='sql_ccflags' である SYSIBMADM.DBCFG の VALUE 列を取り出して変数の中に格納し、その変数を特殊レジスターに割り当てます。
  • トランザクションの考慮事項: SET SQL_CCFLAGS ステートメントはコミット可能な操作ではありません。 ROLLBACK は CURRENT SQL_CCFLAGS に影響を及ぼしません。

  • 例 1: セッションの条件付きコンパイル値を定義して、サーバーが Db2® 9.7 であり、デバッグが false であることを示します。
      SET CURRENT SQL_CCFLAGS 'db2v97:true, debug:false'
  • 例 2: デバッグを true に設定してトレース・レベルを定義するために、既存の CURRENT SQL_CCFLAGS を拡張します。
      BEGIN
        DECLARE LIST VARCHAR(1024);
        SET LIST = CASE WHEN (CURRENT SQL_CCFLAGS = ' ')
                    THEN 'tracelvl:3,debug:true'
                    ELSE CURRENT SQL_CCFLAGS
                         concat ',tracelvl:3,debug:true'
                    END;
        SET CURRENT SQL_CCFLAGS = LIST;
      END

    CURRENT SQL_CCFLAGS 特殊レジスターに条件付きコンパイル値が 1 つも含まれない可能性に対処するために、割り当ての中で CASE 式を使用します。その場合、結果として、変数 LIST の値には先行コンマが含まれることになります。

    例 1 のステートメントとこの例のコンパウンド・ステートメントの実行後に CURRENT SQL_CCFLAGS 特殊レジスターを照会すると、次のように戻ります。
    DB2V97:TRUE, DEBUG:TRUE, TRACELVL:3
    変数 LIST には DEBUG に関する条件付きコンパイル値が 2 回出現しますが、特殊レジスター値では最初の出現場所にのみ表示されます。