Objectif
Construit des documents XML à partir des tables de collection XML indiquées par <Xcollection> dans le fichier DAD et insère chaque document XML sous forme de ligne dans la table de résultats. Vous pouvez également ouvrir un curseur dans la table de résultats et extraire l'ensemble de résultats.
Pour une plus grande souplesse d'utilisation, dxxGenXML() permet également de préciser le nombre maximal de lignes à générer dans la table de résultats. Ceci permet de réduire le délai pendant lequel l'application doit attendre les résultats lors d'une procédure d'essai. La procédure mémorisée renvoie le nombre réel de lignes composant la table et toute information sur les erreurs, y compris les codes et les messages d'erreur.
Pour prendre en charge les requêtes dynamiques, dxxGenXML() utilise le paramètre d'entrée override. En fonction du paramètre d'entrée overrideType, l'application peut remplacer dans le fichier DAD la valeur de l'élément SQL_stmt par le mode de mappage SQL ou les conditions RDB_node par le mode de mappage du noeud RDB. Le paramètre d'entrée overrideType permet de préciser le type du paramètre override. Pour plus d'informations sur le paramètre override, reportez-vous à la section Remplacement dynamique de valeurs dans le fichier 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 */
Paramètres
Tableau 46. Paramètres dxxGenXML()
Paramètre | Description | Paramètre IN/OUT |
---|---|---|
DAD | Objet CLOB contenant le fichier DAD. | IN |
resultTabName | Nom de la table de résultats, existant avant l'appel. La table ne contient qu'une seule colonne de type XMLVARCHAR ou XMLCLOB. | IN |
overrideType | Indicateur précisant le type du paramètre override :
| IN |
override | Remplace la condition dans le fichier DAD. La valeur d'entrée
dépend du paramètre overrideType.
| IN |
maxRows | Nombre maximal de lignes à renvoyer dans la table de résultats. | IN |
numRows | Nombre réel de lignes générées dans la table de résultats. | OUT |
returnCode | Code retour renvoyé par la procédure mémorisée. | OUT |
returnMsg | Message renvoyé en cas d'erreur. | OUT |
Exemples
Soit une table de résultats XML_ORDER_TAB, contenant une colonne de type XMLVARCHAR.
#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);