WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

CALL ステートメント

CALL ステートメントはルーチンを呼び出し (起動し) ます。

構文

構文図を読む構文図をスキップする
>>-CALL--+---------------------+--RoutineName --(--ParameterList--)-->
         '-BrokerSchemaName--.-'                                      

>--+------------+--+--------------+----------------------------><
   '-Qualifiers-'  '-INTO--target-'   

BrokerSchemaName

   .-.--------------.   
   V                |   
|------Identifier---+-------------------------------------------|

ParameterList

   .-,--------------.   
   V                |   
|------Expression---+-------------------------------------------|

Qualifiers

|--+-IN--DatabaseSchemaReference----------+---------------------|
   '-EXTERNAL--SCHEMA--DatabaseSchemaName-'   

DatabaseSchemaReference

|--Database--+-------------------------+--.--SchemaClause-------|
             '-.--DatabaseSourceClause-'                    

DatabaseSourceClause

|--+-DatabaseSourceName-------+---------------------------------|
   '-{--DatabaseSourceExpr--}-'   

SchemaClause

|--+-SchemaName-------+-----------------------------------------|
   '-{--SchemaExpr--}-'   

CALL ステートメントの使用

CALL ステートメントはルーチンを起動します。 ルーチンとは、以下のいずれかにより定義されているユーザー定義の関数またはプロシージャーのことです。
  • CREATE FUNCTION ステートメント
  • CREATE PROCEDURE ステートメント
標準的なユーザー定義の関数やプロシージャーと同様に、CALL を使用して組み込み (ブローカー提供) 関数やユーザー定義 SQL 関数を起動することもできます。 しかし、普通はこれらのタイプの関数は、単にそれらの関数の名前を式に組み込む方法で起動されます。

呼び出されるルーチンは、そのルーチンの定義と一致する方法で起動しなければなりません。 例えば、3 つのパラメーターを指定してルーチンを定義し、そのうち最初の 2 つのタイプが integer で 3 番目のタイプが character である場合、CALL ステートメントは 3 つの変数をルーチンに渡さなければならず、個々のデータ・タイプが定義と一致していなければなりません。 この手法を正確なシグニチャー・マッチング といいます。これは、CALL ステートメントによって提供されるシグニチャーとルーチンの定義によって提供されるシグニチャーが一致していなければならないことを意味します。

さらに、正確なシグニチャー・マッチングはルーチンに戻される値にも適用されます。 RETURNS 文節が CREATE FUNCTION ステートメント上に指定される場合やルーチンが組み込み関数の場合は、CALL ステートメントに INTO 文節を指定する必要があります。 ルーチンからの戻り値は無視できません。 逆に、RETURNS 文節が CREATE FUNCTION ステートメント上に指定されない場合、ルーチンからの戻り値はないので、INTO 文節を指定してはなりません。

CALL ステートメントを使用して、以下のすべての方法でインプリメントされたルーチンを起動することができます。
  • ESQL
  • Java™.
  • データベース中のストアード・プロシージャーとして
  • 組み込み (ブローカー提供) 関数として (ただし上記のように、通常は式に名前が含まれています)。

インプリメンテーションにはこのような種類があるので、CALL 構文図の文節の中には、ルーチンのタイプによっては適用されない (または許可されない) ものがあります。 また、CALL ステートメントは、ルーチンが定義されている方法に関係なく、どのタイプのルーチンでも起動できます。

オプションの BrokerSchemaName パラメーターが指定されていない場合、ブローカー SQL パーサーは PATH ステートメントに記述されているアルゴリズムを使用して名前付きプロシージャーを検索します (BROKER SCHEMA ステートメントの PATH 文節を参照してください)。

BrokerSchemaName パラメーターが指定されている場合、ブローカー SQL パーサーは、パスを先に検索せずに、指定されたスキーマ中の名前付きプロシージャーを起動します。 しかし、プロシージャー参照があいまいで (つまり異なるブローカー・スキーマに同じ名前のプロシージャーが 2 つあり)、かつ参照がオプションの BrokerSchemaName で修飾されていない場合、Eclipse ツール・セットは「問題」ビューでエラーを生成します。あいまいなコードがデプロイされないように、このエラーを訂正する必要があります。

ブローカー提供の組み込み関数は、SQL という事前定義ブローカー・スキーマに自動的に置き換えられます。 SQL スキーマ中でのユーザー定義ルーチンと一致していないルーチンの検索は、常に最後に行われます。 したがって、ユーザー定義モジュールの方が、同じ名前の組み込みルーチンより優先されます。

個々のブローカー・スキーマは、ルーチンの固有のシンボルまたはネーム・スペースを提供します。したがって、ルーチンが属しているスキーマの名前でルーチン名が修飾されている場合、その名前は固有になります。

INTO 文節は、RETURNS 文節で定義されたルーチンまたは組み込み関数からの戻り値を保管するために使用されます。 target は、RETURNS 文節のデータ・タイプと一致するデータ・タイプの ESQL 変数か、ドット区切りのメッセージ参照にすることができます。 例えば、以下の ESQL ステートメントはどちらも有効です。
        CALL myProc1() INTO cursor;
        CALL myProc1() INTO OutputRoot.XMLNS.TestValue1; 

CALL ステートメントはパラメーターを、指定された順序でプロシージャーに渡します。 ルーチンの定義上で IN または INOUT として定義されたパラメーターは、CALL が実行される前に評価されますが、OUT として定義されたパラメーターは、常に適正なタイプの NULL パラメーターとして渡されます。 プロシージャーが完了すると、OUT または INOUT として宣言されたパラメーターは、プロシージャーの実行中に行われた、それらに対する変更を反映するように更新されます。 IN として定義されたパラメーターは、プロシージャーの実行の結果として変更されることは決してありません。

ルーチンの多重定義はサポートされません。つまり、同じブローカー・スキーマの中に同じ名前のルーチンを 2 つ作成することはできません。 ルーチンが多重定義であることをブローカーが検出すると、例外が生じます。 同様に、多重定義されているデータベース・ストアード・プロシージャーを起動することはできません。 同じデータベース・スキーマに同じ名前のプロシージャーが複数ある場合に、データベース・ストアード・プロシージャーは多重定義になります。 しかし、多重定義された Java メソッドであれば、呼び出すことができます。ただし、呼び出すことになる多重定義されたメソッドごとに別々の ESQL 定義を作成し、それぞれの ESQL 定義に固有のルーチン名を付ける必要があります。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:47:20


参照トピック参照トピック | バージョン 8.0.0.5 | ak04920_