SQL パス

SQLパスは、スキーマ名の順序付きリストです。 Db2 は、パスを使用して、ALTER、CREATE、DROP、COMMENT、GRANT、RENAME、または REVOKE ステートメントのメイン・オブジェクト以外のコンテキストに表示される、特定の非修飾オブジェクト名のスキーマ名を解決します。

Db2は、パスを使用して、以下のオブジェクト名のスキーマ名を解決します。
  • データ・タイプ (組み込みタイプと特殊タイプの両方)
  • 関数
  • ストアード・プロシージャー
  • グローバル変数

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」 の順で想定されます。

例えば、 SQLパスが明示的にSYSIBM, GEORGIA, SMITHと指定されていると仮定します。 暗黙的に想定されるスキーマとして、SYSFUN、SYSPROC および SYSIBMADM が明示的なパスの先頭に追加されるので、以下のようなパスになります。
  • SYSFUN、SYSPROC、SYSIBMADM、SYSIBM、GEORGIA、SMITH

ダイナミックSQLの SQLパスに関する詳細は、 CURRENT PATH 特殊レジスタおよび SET PATH 文を参照してください。