SET SCHEMA ステートメント
SET SCHEMA ステートメントは、CURRENT SCHEMA 特殊レジスターの値を変更します。
このステートメントは、トランザクションの制御下にありません。 DYNAMICRULES BIND オプションを使ってパッケージがバインドされている場合、 このステートメントは、修飾されていないデータベース・オブジェクト参照に使用される修飾子に影響を与えません。
呼び出し
このステートメントはアプリケーション・プログラムに組み込むことができ、また対話式に出すことができます。 このステートメントは、動的に作成できる実行可能ステートメントです。
許可
必要ありません。
構文
説明
- schema-name
- これは、1 つの部分だけからなる名前で、 アプリケーション・サーバーに存在するスキーマを指定します。 名前の長さは、128 バイトを超えてはなりません (SQLSTATE 42815)。 そのスキーマの存否の検査は、スキーマ設定時には行われません。 schema-name (スキーマ名) のつづりが誤っていると、エラーをキャッチすることができず、以降の SQL ステートメントの実行の仕方に影響を及ぼす可能性があります。
- ユーザー
- USER 特殊レジスターの値。
- SESSION_USER
- SESSION_USER 特殊レジスターの値。
- SYSTEM_USER
- SYSTEM_USER 特殊レジスターの値。
- CURRENT_USER
- CURRENT_USER 特殊レジスターの値。
- ホスト変数
- タイプ CHAR または VARCHAR の変数です。 host-variable の内容の長さは、128 バイトを超えてはなりません (SQLSTATE 42815)。 NULL に設定することはできません。 host-variable が標識変数を伴っている場合、
その標識変数の値は NULL 値以外でなければなりません (SQLSTATE 42815)。
host-variable の文字は左揃えでなければなりません。 host-variable にスキーマ名 を指定する場合は、 英大文字への変換はなされないので、 すべての文字を大/小文字の区別も含めて正確に指定する必要があります。
- ストリング定数
- 128 バイトの最大長を超えない文字ストリング定数。
ルール
- 指定した値が schema-name の規則に適合しない場合、 エラー (SQLSTATE 3F000) が発生します。
- CURRENT SCHEMA 特殊レジスターの値は、 すべての動的 SQL ステートメント (データベース・オブジェクトへの非修飾参照がある CREATE SCHEMA ステートメントを除く) でスキーマ名として使用されます。
- QUALIFIER BIND オプションは、 静的 SQL ステートメントで非修飾データベース・オブジェクト名の修飾子として使用するスキーマ名を指定します。
注
- CURRENT SCHEMA 特殊レジスターの初期値は USER と同じです。
- CURRENT SCHEMA 特殊レジスターを設定しても、CURRENT PATH 特殊レジスターには影響しません。 したがって、CURRENT SCHEMA は SQL パスおよび関数に含まれず、 プロシージャーおよびユーザー定義タイプの解決ではこれらのオブジェクトを見つけることができない場合があります。 SQL パスに現行スキーマ値を含めるには、SET SCHEMA ステートメントを発行するときに、 SET SCHEMA ステートメントからスキーマ名を含む SET PATH ステートメントも発行してください。
- CURRENT SQLID は CURRENT SCHEMA の同義語として受け入れられ、 SET CURRENT SQLID ステートメントは SET CURRENT SCHEMA ステートメントと同じ影響を及ぼします。 ステートメント許可変更など、他の影響はありません。
例
- 例 1: 以下のステートメントは、CURRENT SCHEMA 特殊レジスターを設定します。
SET SCHEMA RICK
- 例 2: 以下の例では、CURRENT SCHEMA 特殊レジスターの現行値を検索して、CURSCHEMA というホスト変数に入れます。
値は、前の例で設定された RICK になります。EXEC SQL VALUES (CURRENT SCHEMA) INTO :CURSCHEMA;