Manuali IBM

XML Extender - Gestione e programmazione


Procedure di memorizzazione di scomposizione

Le procedure memorizzate di scomposizione dxxInsertXML() e dxxShredXML() vengono utilizzate per scomporre i documenti XML in entrata e per memorizzare i dati nelle tabelle nuove o esistenti del database. La procedura memorizzata dxxInsertXML() rileva un nome di raccolta XML abilitata come input. La procedura memorizzata dxxShredXML() rileva un file DAD come input; non richiede una raccolta XML abilitata.

dxxShredXML()

Scopo

La procedura memorizzata dxxShredXML() è associata alla procedura memorizzata dxxGenXML(). Per utilizzare la procedura memorizzata dxxShredXML(), è necessario che esistano tutte le tabelle specificate nel file DAD e che tutte le colonne e i relativi tipi di dati in esso specificati siano congruenti con le tabelle esistenti. La procedura memorizzata dxxShredXML() non richiede alcuna relazione di chiavi primarie-esterne tra le tabelle di collegamento create da XML Extender durante il processo di abilitazione raccolta. Tuttavia, è necessario che le colonne con condizione di collegamento specificate in RDB_node della radice element_node siano presenti nelle tabelle.

dxxShredXML(CLOB(100K)    DAD,            /* input */
             CLOB(1M)       xmlobj,           /* input */
             long           returnCode,       /* output */
             varchar(1024)  returnMsg)        /* output */

Parametri

Tabella 48. Parametri di dxxShredXML()
Parametro Descrizione Parametro IN/OUT
DAD Il CLOB contenente il file DAD. IN
xmlobj Un oggetto documento XML di tipo XMLCLOB. IN
returnCode Il codice di ritorno della procedura memorizzata. OUT
returnMsg Il testo del messaggio restituito in caso di errore. OUT

Esempi

Di seguito è riportato un esempio di un richiamo di dxxShredXML().

#include "dxx.h"
#include "dxxrc.h"
 
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
              SQL TYPE is CLOB dad;           /* DAD*/
              SQL TYPE is CLOB_FILE  dadFile; /* DAD file*/
              SQL TYPE is CLOB xmlDoc;        /* input XML document */
              SQL TYPE is CLOB_FILE xmlFile;  /* input XMLfile */
              long                  returnCode;      /* error code */
              char                  returnMsg[1024]; /* error message text */
              short       dad_ind;
              short                 xmlDoc_ind;
              short                 returnCode_ind;
              short                 returnMsg_ind;
EXEC SQL END DECLARE SECTION;
 
              /* initialize host variable and indicators */
              strcpy(dadFile.name,"c:\dxx\samples\dad\getstart_xcollection.dad");
              dadFile.name_length=strlen("c:\dxx\samples\dad\getstart_xcollection.dad");
              dadFile.file_option=SQL_FILE_READ;
              strcpy(xmlFile.name,"c:\dxx\samples\cmd\getstart.xml");
              xmlFile.name_length=strlen("c:\dxx\samples\cmd\getstart.xml");
              xmlFile.file_option=SQL_FILE_READ;
              SQL EXEC VALUES (:dadFile) INTO :dad;
              SQL EXEC VALUES (:xmlFile) INTO :xmlDoc;
              returnCode = 0;
              returnMsg[0] = '\0';
              dad_ind = 0;
              xmlDoc_ind = 0;
              returnCode_ind = -1;
              returnMsg_ind = -1;
 
              /* Call the store procedure */
              EXEC SQL CALL db2xml!dxxShredXML(:dad:dad_ind;
                              :xmlDoc:xmlDoc_ind,
                              :returnCode:returnCode_ind,:returnMsg:returnMsg_ind);

dxxInsertXML()

Scopo

Rileva due parametri di input, il nome di una raccolta XML abilitata e il documento XML da scomporre e restituisce due parametri di output, un codice di ritorno e un messaggio di errore.

dxxInsertXML(char(UDB_SIZE) collectionName,   /* input */
             CLOB(1M)       xmlobj,           /* input */
             long           returnCode,       /* output */
             varchar(1024)  returnMsg)        /* output */

Parametri

Tabella 49. Parametri dxxInsertXML()
Parametro Descrizione Parametro IN/OUT
collectionName Il nome di una raccolta XML abilitata IN
xmlobj Un oggetto documento XML di tipo CLOB. IN
returnCode Il codice di ritorno della procedura memorizzata. OUT
returnMsg Il testo del messaggio restituito in caso di errore. OUT

Esempi

Nel seguente esempio, la chiamata dxxInsertXML() scompone il documento XML di input e:\xml\order1.xml e inserisce i dati nelle tabelle della raccolta SALES_ORDER a seconda dell'associazione specificata nel file DAD con la quale è stata abilitata.

#include "dxx.h"
#include "dxxrc.h"
 
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
              char                  collection[64];  /* name of an XML collection */
              SQL TYPE is CLOB_FILE xmlDoc;          /* input XML document */
              long                  returnCode;      /* error code */
              char                  returnMsg[1024]; /* error message text */
              short                 collection_ind;
              short                 xmlDoc_ind;
              short                 returnCode_ind;
              short                 returnMsg_ind;
EXEC SQL END DECLARE SECTION;
 
              /* initialize host variable and indicators */
              strcpy(collection,"sales_ord")
              strcpy(xmlobj.name,"c:\dxx\samples\cmd\getstart.xml");
              xmlobj.name_length=strlen("c:\dxx\samples\cmd\getstart.xml");
              xmlobj.file_option=SQL_FILE_READ;
              returnCode = 0;
              returnMsg[0] = '\0';
              collection_ind = 0;
              xmlobj_ind = 0;
              returnCode_ind = -1;
              returnMsg_ind = -1;
 
              /* Call the store procedure */
              EXEC SQL CALL db2xml!dxxInsertXML(:collection:collection_ind;
                              :xmlobj:xmlobj_ind,
                              :returnCode:returnCode_ind,:returnMsg:returnMsg_ind);


[ Inizio pagina | Pagina precedente | Pagina successiva | Indice | Indice analitico ]