SQL パス
SQLパスは、スキーマ名の順序付きリストです。 Db2 は、パスを使用して、ALTER、CREATE、DROP、COMMENT、GRANT、RENAME、または REVOKE ステートメントのメイン・オブジェクト以外のコンテキストに表示される、特定の非修飾オブジェクト名のスキーマ名を解決します。
- データ・タイプ (組み込みタイプと特殊タイプの両方)
- 関数
- ストアード・プロシージャー
- グローバル変数
Db2 は、左から右の順にパスを検索し、ユーザーが適切な権限を持つ、同じ無修飾名を持つ同じオブジェクトを含むSQLパスの最初のスキーマ名を、オブジェクト名に暗黙的に修飾します。 Db2 は、同じ名前でパラメータ数が同じでもパラメータのデータ型が異なる複数の関数が、同じスキーマまたはSQLパス内の他のスキーマで定義されている可能性があるため、どの関数を選択するかを決定するために、 SQLパスと組み合わせて関数解決と呼ばれるプロセスを使用します。 (詳細は、 関数解決を参照) プロシージャーの場合、Db2は、パラメーターの数も同じ場合にのみ、一致するプロシージャー名を選択します。
SQL パスは、ASSOCIATE LOCATOR ステートメントと DESCRIBE PROCEDURE ステートメント内の非修飾プロシージャー名には適用されません。 これらのステートメントの場合、暗黙のスキーマ名は生成されません。
Db2 がSQLパスを使用してスキーマ名を解決する方法の例として、 SQLパスがSMITH、XGRAPHIC、SYSIBMであり、修飾されていない明確な型名MYTYPEが指定されたと仮定します。 Db2 MYTYPEは、まずスキーマSMITH、次にXGRAPHIC、そしてSYSIBMの順に検索されます。
PATHオプションは、解決に使用される SQLパスを確立します
- 静的 SQL ステートメント内の非修飾のデータ・タイプ名、グローバル変数名、および関数名
- プロシージャー名を ID トークンとして指定している SQL CALL ステートメント (CALL procedure-name) 内の非修飾プロシージャー名
計画またはパッケージが作成または最後に再バインドされたとき、あるいはネイティブSQLプロシージャが定義または最後に変更されたときに、PATHオプションが指定されていない場合、 SQLパスの既定値は次のとおりです。SYSIBM、SYSFUN、SYSPROC、 計画またはパッケージ修飾子。
CURRENT PATH 特殊レジスタは、解決に使用される SQL パスを決定します
- 動的 SQL ステートメント内の非修飾のデータ・タイプ名、グローバル変数名、および関数名
- プロシージャー名をホスト変数に指定している SQL CALL ステートメント (CALL host-variable) 内の非修飾プロシージャー名
一般に、CURRENT PATH 特殊レジスターの初期値は次のいずれかです。
- PATH オプションの値
- "SYSIBM"、"SYSFUN"、"SYSPROC"、"SYSIBMADM"、PATHオプションが指定されていない場合の CURRENT SQLID特殊レジスタの値。
スキーマ 「SYSIBM」、「SYSFUN」、「SYSPROC」、「SYSIBMADM」 がSQLパスで明示的に指定されていない場合、スキーマはパスの先頭で暗黙的に想定されます。すべてが指定されていない場合、「SYSIBM」、「SYSFUN」、「SYSPROC」、「SYSIBMADM」 の順で想定されます。
- SYSFUN、SYSPROC、SYSIBMADM、SYSIBM、GEORGIA、SMITH
ダイナミックSQLの SQLパスに関する詳細は、 CURRENT PATH 特殊レジスタおよび SET PATH 文を参照してください。