CURRENT PATH 特殊レジスター
CURRENT PATH (または CURRENT_PATH) 特殊レジスターは、動的に作成された SQL ステートメントの非修飾の関数名、プロシージャー名、データ・タイプ名、グローバル変数名、およびモジュール・オブジェクト名の解決に使用される SQL パスを識別する、VARCHAR(2048) 値を指定します。CURRENT FUNCTION PATH は、CURRENT PATH の同義語です。
初期値は、以下の段落に示すデフォルト値です。静的 SQL の場合は、FUNCPATH BIND オプションで 関数およびデータ・タイプの解決のための SQL パスを指定できます。
CURRENT PATH 特殊レジスターには、
二重引用符で囲まれ、コンマで区切られた、1 つ以上のスキーマ名のリストが入っています。
例えば、データベース・マネージャーがまず FERMAT スキーマを参照し、
次いで XGRAPHIC スキーマ、最後に SYSIBM スキーマを参照するように指定する SQL パスは、
CURRENT PATH 特殊レジスターでは以下のように戻されます。
"FERMAT","XGRAPHIC","SYSIBM"
デフォルト値は "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM",X (X は USER 特殊レジスターの値) で、それぞれは二重引用符で区切られます。 値は、SET CURRENT PATH ステートメントを呼び出すことによって変更できます。 SYSIBM スキーマを指定する必要はありません。 SQL パスにスキーマが指定されていなければ、暗黙的にそのスキーマが最初のスキーマとして見なされます。 暗黙的に想定されている場合、SYSIBM は 2048 バイトを一切扱いません。
スキーマ名で修飾されないデータ・タイプは、 同じ非修飾名のデータ・タイプが入っている SQL パスの最初のスキーマで暗黙的に修飾されます。 この規則には、CREATE TYPE (Distinct)、CREATE FUNCTION、COMMENT、 および DROP ステートメントの部分で概説されているように例外があります。
例: SYSCAT.ROUTINES カタログ・ビューを使用して、CURRENT PATH 特殊レジスターにスキーマ名が含まれているために、ルーチン名を修飾せずに呼び出せるすべてのユーザー定義ルーチンを検索します。
SELECT ROUTINENAME, ROUTINESCHEMA FROM SYSCAT.ROUTINES
WHERE POSITION (ROUTINESCHEMA, CURRENT PATH, CODEUNITS16) <> 0