SET PATH ステートメント

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

このステートメントは、トランザクションの制御下にありません。

呼び出し

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

許可

必要ありません。

構文

Read syntax diagramSkip visual syntax diagramSETCURRENTPATHCURRENT_PATH=,schema-nameSYSTEM PATHUSERCURRENT PATHCURRENT_PATHCURRENT PACKAGE PATHhost-variablestring-constant

説明

schema-name
これは、1 つの部分だけからなる名前で、 アプリケーション・サーバーに存在するスキーマを指定します。 そのスキーマの存否の検査は、パス設定時には行われません。 例えば schema-name (スキーマ名) のつづりが誤っていると、 エラーを捉えることができず、以降の SQL 操作に影響を及ぼします。
SYSTEM PATH
この値を指定すると、スキーマ名として "SYSIBM"、"SYSFUN"、"SYSPROC"、"SYSIBMADM" を指定したのと同じことになります。
ユーザー
USER 特殊レジスターの値。
CURRENT PATH
このステートメントを実行する前の CURRENT PATH 特殊レジスターの値。
CURRENT PACKAGE PATH
CURRENT PACKAGE PATH 特殊レジスターの値。
ホスト変数
タイプ CHAR または VARCHAR の変数です。 host-variable の内容の長さは、128 バイトを超えてはなりません (SQLSTATE 42815)。 NULL に設定することはできません。 host-variable が標識変数を伴っている場合、 その標識変数の値は NULL 値以外でなければなりません (SQLSTATE 42815)。

host-variable の文字は左揃えでなければなりません。 host-variableスキーマ名 を指定する場合は、 英大文字への変換はなされないので、 すべての文字を大/小文字の区別も含めて正確に指定する必要があります。

ストリング定数
128 バイトの最大長を超えない文字ストリング定数。

ルール

  • SQL パスの中に 1 つのスキーマ名を複数回指定することはできません (SQLSTATE 42732)。
  • スキーマ名 SYSPUBLIC を SQL パスで指定することはできません (SQLSTATE 42815)。
  • 指定できるスキーマの数は、CURRENT PATH 特殊レジスターの合計長によって限定されます。 特殊レジスターのストリングは、指定した各スキーマの名前から後続ブランクを除き、 二重引用符で区切り、必要に応じてスキーマ名の中で使われている引用符を反復させ、 スキーマ名をコンマで区切ったものになります。 結果のストリングの長さが 2048 バイトを超えてはなりません (SQLSTATE 42907)。

  • CURRENT PATH 特殊レジスターの初期値は、 "SYSIBM"、 "SYSFUN"、 "SYSPROC"、 "SYSIBMADM"、 "X" です (X は USER 特殊レジスターの値)。
  • SYSIBM スキーマを指定する必要はありません。 それが SQL パスに含まれていない場合、 暗黙のうちに最初のスキーマであると見なされます (この場合 CURRENT PATH 特殊レジスターには入れられません)。
  • CURRENT PATH 特殊レジスターは、動的 SQL ステートメント内の関数名、プロシージャー名、データ・タイプ名、グローバル変数名、およびモジュール・オブジェクト名を解決するために使用する SQL パスを指定します。 バインド・オプション FUNCPATH は、静的 SQL ステートメント内の関数名、プロシージャー名、データ・タイプ名、グローバル変数名、およびモジュール・オブジェクト名の解決に使用する SQL パスを指定します。
  • 代替構文: Db2® の以前のバージョンおよび他のデータベース製品との互換性のために、以下の代替の構文がサポートされています。 これらの代替は非標準であり、使用すべきではありません。
    • CURRENT PATH の代わりに CURRENT FUNCTION PATH を指定できます。

  • 例 1: 以下のステートメントは、CURRENT PATH 特殊レジスターを設定します。
       SET PATH = FERMAT, "McDrw #8", SYSIBM
  • 例 2: 以下の例では、CURRENT PATH 特殊レジスターの現行値を検索して CURPATH という名前のホスト変数に入れます。
       EXEC SQL VALUES (CURRENT PATH) INTO :CURPATH;
    例 1 での設定を使った場合、値は "FERMAT"、"McDrw #8"、"SYSIBM" になります。