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