目的
(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 */
パラメーター
パラメーター | 説明 | IN/OUT パラメーター |
---|---|---|
DAD | DAD ファイルを含む CLOB | IN |
resultTabName | 結果表の名前。これは呼び出しの前にすでに存在しなければなりません。 この表には、XMLVARCHAR または XMLCLOB のいずれかのタイプの列を 1 つだけ含めます。 | IN |
overrideType | 下記の override パラメーターのタイプを示すフラグ
| IN |
override | DAD ファイル内の条件をオーバーライドします。
入力値は overrideType に応じて次のとおりです。
| 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);