IBM Books

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

dxxGenXML()

目的

(DAD ファイルの <Xcollection> で指定された) XML コレクション表に保管されているデータを使用して XML 文書を作成し、 それぞれの XML 文書を行として結果表の中に挿入します。 また、結果表でカーソルを開いて結果セットを取り出すこともできます。

dxxGenXML() では、 結果表の中に生成する行の最大数をユーザーが任意に指定することができます。 これによって、試行プロセス中にアプリケーションが結果を待つ時間を短縮できます。 このストアード・プロシージャーは、 表内の実際の行番号とエラー情報 (エラー・コードおよびエラー・メッセージ) を戻します。

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

dxxGenXML(CLOB(100K)     DAD,             /* 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 */

パラメーター

表 46. dxxGenXML() パラメーター
パラメーター 説明 IN/OUT パラメーター
DAD DAD ファイルを含む CLOB 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

以下の例では、XML_ORDER_TAB という名前の結果表が作成されることと、 XMLVARCHAR タイプの 1 つの列が表に含まれることを想定します。

#include "dxx.h"
#include "dxxrc.h"
 
              EXEC SQL INCLUDE SQLCA;
              EXEC SQL BEGIN DECLARE SECTION;
              SQL TYPE is CLOB(100K)  dad;              /* DAD */
              SQL TYPE is CLOB_FILE   dadFile;          /* dad file */
              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                   dad_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 CREATE TABLE xml_order_tab (xmlorder XMLVarchar);
 
              /* read data from a file to a CLOB */
              strcpy(dadfile.name,"e:\dxx\dad\litem3.dad");
              dadfile.name_length = strlen("e:\dxx\dad\litem3.dad");
              dadfile.file_options = SQL_FILE_READ;
              EXEC SQL VALUES (:dadfile) INTO :dad;
              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;
              dad_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 dxxGenXML(:dad:dad_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);


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