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"、"SYSHADOOP"を指定するのと同じです。
ユーザー
USER 特殊レジスターの値。
CURRENT PATH
このステートメントを実行する前の CURRENT PATH 特殊レジスターの値。
CURRENT PACKAGE PATH
CURRENT PACKAGE PATH 特殊レジスターの値。
ホスト変数 (host-variable)
タイプ 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」、「SYSHADOOP」、「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" になります。