データベースに保管されているプロシージャーを呼び出すには、ESQL CALL ステートメントで EXTERNAL 文節を使用します。
どのデータベースでも多重定義プロシージャーがサポートされていないように、SQLServer ではストアード・プロシージャーはサポートされていません。 (多重定義プロシージャーとは、同じデータベース・スキーマ内の別のプロシージャーと同じ名前を持つプロシージャーで、パラメーターの数またはパラメーターのタイプが異なるものです。) プロシージャーが多重定義であることをブローカーが検出すると、例外が生じます。
CALL ステートメントを使用してストアード・プロシージャーを呼び出すと、 ブローカーは、次のように ESQL 定義とデータベース定義を確実に一致させます。
プロシージャーの作成時にスキーマ名に単一のパーセント文字を指定した場合は、 スキーマ名が動的であり、CALL ステートメントで解決されることを表します (下を参照)。
データベース・ストアード・プロシージャーに対応する ESQL プロシージャーを定義する場合は、修飾名 (修飾子がデータベース・スキーマである場合) または非修飾名を指定できます。
ストアード・プロシージャーを作成するには、以下のようにします。
CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "myProc";
この例の ESQL 定義の名前は、データベース・プロシージャー名と同じになっています。 この名前は同じである必要はありません。 ここで指定するデータベース・プロシージャー名はデータベースに作成した定義と一致していなければなりませんが、対応する ESQL プロシージャーには任意の名前を指定できます。
CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "Schema1.Proc1";
この例では、ESQL プロシージャー名は、データベース・プロシージャー名と一致していません。
CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "mySchema.myPackage.myProc";
CREATE PROCEDURE myProc(IN p1 CHAR) EXTERNAL NAME "%.myProc";
この仕様でプロシージャーを作成し、 対応する呼び出しステートメント (下を参照) を使用する場合は、 呼び出しが実行されるときに呼び出されるストアード・プロシージャーを正確に決定できます。
CALL myProc('HelloWorld');
CALL myProc('HelloWorld') EXTERNAL SCHEMA 'Schema2';
CALL myProc('HelloWorld') EXTERNAL SCHEMA InputRoot.XML.Test.SchemaName;
注意 |
商標 |
ダウンロード |
ライブラリー |
技術サポート |
フィードバック
![]() ![]() |
ac17040_ |