IBM Books

Extension XML Administration et programmation

dxxRetrieveXML()

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 :
  • NO_OVERRIDE : Aucun remplacement.
  • SQL_OVERRIDE : Remplacement par une valeur SQL_stmt.
  • XML_OVERRIDE : Remplacement par une condition basée sur XPath.
IN
override Remplace la condition dans le fichier DAD. La valeur d'entrée dépend du paramètre overrideType.
  • NO_OVERRIDE : chaîne de type NULL.
  • SQL_OVERRIDE : instruction SQL valide. Avec cette valeur overrideType, le mode de mappage SQL doit être utilisé dans le fichier DAD. L'instruction SQL d'entrée remplace la valeur de l'élément SQL_stmt dans le fichier DAD.
  • XML_OVERRIDE : chaîne d'une ou plusieurs expressions placées entre guillemets et séparées par "AND". Avec cette valeur overrideType, le mode de mappage du noeud RDB doit être utilisé dans le fichier DAD.
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);


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]