IBM Books

Extension XML Administration et programmation

dxxGenXML()

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 :
  • 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

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); 


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