IBM Books

管理およびプログラミングの手引き

dxxRetrieveXML()

目的

合成と分解の両方で同じ DAD ファイルを使用できるようにします。 また、分解された XML 文書を、 ストアード・プロシージャー dxxRetrieveXML() を使って取り出すこともできます。 dxxRetrieveXML() は入力として DAD ファイルを含むバッファー、 作成される結果表の名前、および戻される行の最大数を取ります。 また結果セット (結果表)、結果セット内の実際の行数、 およびエラー・コードとメッセージ・テキストを戻します。

動的照会をサポートするために、 dxxRetrieveXML() は入力パラメーター override を取ります。 入力 overrideType に基づいて、 アプリケーションは DAD ファイル内の SQL マッピングの SQL_stmt、 または RDB_node 内の RDB_node マッピング条件をオーバーライドできます。 入力パラメーター overrideType を使用して、 override のタイプを明示します。 override パラメーターについての詳細は、DAD ファイル内の値を動的にオーバーライドするを参照してください。

dxxRetrieveXML() を使用するための DAD ファイルの要件は、 dxxGenXML() を使用する場合の要件と同じです。 唯一の違いとして、dxxRetrieveXML() の入力パラメーターは DAD ではなく、 使用可能な XML コレクションの名前です。

dxxRetrieveXML(char(UDB_SIZE) collectionName,   /* input */
               char(UDB_SIZE) resultTabName,    /* input */
               integer        overrideType,     /* input */
               varchar(1024)  override,         /* input */
               integer        maxRows,          /* input */
               integer        numRows,          /* output */
               long           returnCode,       /* output */
               varchar(1024)  returnMsg)        /* output */

パラメーター

表 47. dxxRetrieveXML() パラメーター
パラメーター 説明 IN/OUT パラメーター
collectionName 使用可能な XML コレクションの名前 IN
resultTabName 結果表の名前。これは呼び出しの前にすでに存在しなければなりません。 この表には、XMLVARCHAR または XMLCLOB のいずれかのタイプの列を 1 つだけ含めます。 IN
overrideType 下記の override パラメーターのタイプを示すフラグ
  • NO_OVERRIDE: オーバーライドしない
  • SQL_OVERRIDE: SQL_stmt によるオーバーライド
  • XML_OVERRIDE: XPath ベースの条件によるオーバーライド
IN
override DAD ファイル内の条件をオーバーライドします。 入力値は overrideType に応じて次のとおりです。
  • NO_OVERRIDE: ヌル・ストリング。
  • SQL_OVERRIDE: 有効な SQL ステートメント。 この overrideType を使用するには、 DAD ファイル内で SQL マッピングを使用する必要があります。 入力 SQL ステートメントは DAD ファイルの SQL_stmt をオーバーライドします。
  • XML_OVERRIDE: 1 つまたは複数の式を含むストリング。 複数の式は二重引用符で囲んで AND で分離します。 この overrideType を使用するには、 DAD ファイル内で RDB_node マッピングを使用する必要があります。
IN
maxRows 結果表の行の最大数 IN
numRows 結果表に実際に生成された行の数 OUT
returnCode ストアード・プロシージャーからの戻りコード OUT
returnMsg エラー発生時に戻されるメッセージ・テキスト OUT

以下は dxxRetrieveXML() の呼び出しの例です。 この例では XML_ORDER_TAB という名前の結果表が作成され、 XMLVARCHAR タイプの 1 つの列がその表に含まれます。

#include "dxx.h"
#include "dxxrc.h"
            EXEC SQL INCLUDE SQLCA;
            EXEC SQL BEGIN DECLARE SECTION;
              char    collection[32];    /* dad buffer */
              char    result_tab[32];    /* name of the result table */
              char    override[2];       /* override, will set to NULL*/
              short   overrideType;      /* defined in dxx.h */
              short   max_row;           /* maximum number of rows */
              short   num_row;           /* actual number of rows */
              long    returnCode;        /* return error code */
              char    returnMsg[1024];   /* error message text */
              short   dadbuf_ind;
              short   rtab_ind;
              short   ovtype_ind;
              short   ov_inde;
              short   maxrow_ind;
              short   numrow_ind;
              short   returnCode_ind;
              short   returnMsg_ind;
              EXEC SQL END DECLARE SECTION;
              
              /* create table */
              EXEC SQL CREATE TABLE xml_order_tab (xmlorder XMLVarchar);
 
              /* initialize host variable and indicators */
              strcpy(collection,"sales_ord");
              strcpy(result_tab,"xml_order_tab");
              override[0] = '\0';
              overrideType = NO_OVERRIDE;
              max_row = 500;
              num_row = 0;
              returnCode = 0;
              msg_txt[0] = '\0';
              collection_ind = 0;
              rtab_ind = 0;
              ov_ind = -1;
              ovtype_ind = 0;
              maxrow_ind = 0;
              numrow_ind = -1;
              returnCode_ind = -1;
              returnMsg_ind = -1;
 
              /* Call the store procedure */
              EXEC SQL CALL dxxRetrieve(:collection:collection_ind;
                     :result_tab:rtab_ind,
                     :overrideType:ovtype_ind,:override:ov_ind,
                     :max_row:maxrow_ind,:num_row:numrow_ind,
                     :returnCode:returnCode_ind,:returnMsg:returnMsg_ind);


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]