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

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

SELECT への戻り値の検査

SELECT 関数がデータを戻さない場合、またはこれ以上データがない場合、正常な状態として処理され、SQLCODE にエラー・コードは設定されません。これは、現行ノードで「データベース・エラー時に例外をスローする」および「警告をエラーとして扱う」プロパティーが設定されているかどうかに関係ありません。

SELECT 関数がデータを戻していないことを確認するには、何が戻されたかを検査する ESQL を組み込みます。 以下のような様々なメソッドを使用できます。

  1. EXISTS

    この ESQL は、SELECT 関数が 1 つ以上の値を戻したか (TRUE)、それとも値を戻さなかったか (FALSE) を示すブール値を戻します。

    IF EXISTS(SELECT T.MYCOL FROM Database.MYTABLE) THEN 
    ...
  2. CARDINALITY

    SELECT に対して配列が戻されることを期待する場合は、CARDINALITY を使用して受信されたエントリーの数を計算できます。

    SET OutputRoot.XMLNS.Testcase.Results[] = ( 
        SELECT T.MYCOL FROM Database.MYTABLE)
    ......
    IF CARDINALITY (OutputRoot.XMLNS.Testcase.Results[])> 0 THEN
    ........
  3. IS NULL

    SELECT 関数に THE または ITEM キーワードのいずれかを使用した場合は、スカラー値が戻されます。 戻された行がない場合は、値は NULL に設定されます。 ただし、値 NULL が列に含まれている可能性もあるため、これら 2 つのケースを区別したい場合もあるでしょう。

    SELECT 関数に COALESCE を組み込むことによってこれらのケースを区別します。例えば、以下のようにします。

    SET OutputRoot.XMLNS.Testcase.Results VALUE = THE (
       SELECT ITEM COALESCE(T.MYCOL, 'WAS NULL')
       FROM Database.MYTABLE);

    この例で文字ストリング WAS NULL が戻される場合は、戻された行がなかったのではなく、列に NULL が含まれていたことを示します。

前のリリースでは、データがない場合、またはこれ以上データがない場合は、100 の SQLCODE が設定されていました。 メッセージ・フロー内のデータベース・エラーを処理することを選択した場合は、ブローカーによって例外が出されていました。

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

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

        
        最終更新:
        
        最終更新: 2015-02-28 17:45:34


タスク・トピックタスク・トピック | バージョン 8.0.0.5 | ac17020_