SQL 解説書
SET SCHEMA ステートメントは、CURRENT SCHEMA 特殊レジスターの値を変更します。
このステートメントは、トランザクションの制御下にはありません。
DYNAMICRULES BIND オプションを使ってパッケージがバインドされている場合、
このステートメントは何も行いません。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、
あるいは対話式に発行することができます。
このステートメントは、動的に準備可能な実行可能ステートメントです。
許可
このステートメントの実行には、特に権限は必要ありません。
構文
.-CURRENT-. .-=-.
>>-SET--+---------+--SCHEMA--+---+----+-schema-name-----+------><
+-USER------------+
+-host-variable---+
'-string-constant-'
説明
- schema-name
- これは、1 つの部分だけからなる名前で、
アプリケーション・サーバーに存在するスキーマを指定します。
名前の長さは、30 バイトを超えてはなりません (SQLSTATE 42815)。
そのスキーマの存否の検査は、スキーマ設定時には行われません。
schema-name (スキーマ名) が間違っていると、
取り込むことができず、以降の SQL 操作に影響を及ぼします。
- USER
- USER 特殊レジスターの値。
- host-variable
- CHAR または VARCHAR のタイプの変数です。
host-variable の内容の長さは、30 バイトを超えてはなりません (SQLSTATE 42815)。
NULL に設定することはできません。
host-variable が標識変数を伴っている場合、
その標識変数の値は NULL 値以外でなければなりません (SQLSTATE 42815)。
host-variable の文字は左寄せされていなければなりません。
host-variable にスキーマ名 を指定する場合は、
英大文字への変換はなされないので、
すべての文字を大文字小文字の区別も含めて正確に指定する必要があります。
- string-constant
- 30 文字を超えない文字ストリング定数。
規則
- 指定した値が schema-name の規則に適合しない場合、
エラー (SQLSTATE 3F000) が発生します。
- CURRENT SCHEMA 特殊レジスターの値は、
すべての動的 SQL ステートメント (データベース・オブジェクトへの非修飾参照がある CREATE SCHEMA ステートメントを除く) でスキーマ名として使用されます。
- QUALIFIER バインド・オプションは、
静的 SQL ステートメントで非修飾データベース・オブジェクト名の修飾子として使用するスキーマ名を指定します (QUALIFIER オプションの使用に関する詳細は、
コマンド解説書 を参照してください)。
注
- 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 という名前のホスト変数に入れます。
EXEC SQL VALUES (CURRENT SCHEMA) INTO :CURSCHEMA;
値は、前の例で設定された RICK になります。
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]