Objectif
Active le fichier DAD à utiliser pour les opérations de composition et de décomposition. La procédure mémorisée dxxRetrieveXML() permet également de récupérer des documents XML décomposés. La procédure mémorisée dxxRetrieveXML() utilise comme paramètres d'entrée une mémoire tampon contenant le fichier DAD, le nom de la table de résultats à générer et le nombre maximal de lignes à renvoyer. Elle renvoie un ensemble de la table de résultats, le nombre réel de lignes composant celle-ci, un code et un message d'erreur.
Pour prendre en charge les requêtes dynamiques, dxxRetrieveXML() 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.
Les exigences liées au fichier DAD pour dxxRetrieveXML() sont identiques à celles de la procédure dxxGenXML(). La seule différence est que le fichier DAD n'est pas un paramètre d'entrée de dxxRetrieveXML(), mais le nom d'une collection XML activée.
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 */
Paramètres
Tableau 47. Paramètres dxxRetrieveXML()
Paramètre | Description | Paramètre IN/OUT |
---|---|---|
collectionName | Nom d'une collection XML activée. | 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
Voici un exemple d'appel de la procédure dxxRetrieveXML(). 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; 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);