xml extender amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · db2 ® xml...

341
DB2 ® XML Extender - Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Upload: others

Post on 06-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

DB2®

XML Extender - Amministrazione e programmazione

DB2 Versione 9

per Linux, UNIX e Windows

SC13-3579-00

���

Page 2: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00
Page 3: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

DB2®

XML Extender - Amministrazione e programmazione

DB2 Versione 9

per Linux, UNIX e Windows

SC13-3579-00

���

Page 4: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Prima di utilizzare queste informazioni e il prodotto supportato, accertarsi di aver consultato le informazioni generiche contenute

in Informazioni particolari.

Informazioni particolari sull’edizione

Questo documento contiene informazioni di proprietà dell’IBM. Viene fornito con un accordo di licenza ed è

protetto dalle leggi sul copyright. Le informazioni contenute in questa pubblicazione non includono alcuna garanzia

sul prodotto e tutte le istruzioni fornite in questo manuale non vanno interpretate in tale senso.

E’ possibile ordinare le pubblicazioni IBM in linea oppure tramite un rappresentante IBM.

v Per ordinare le pubblicazioni in linea, visitare IBM Publications Center all’indirizzo www.ibm.com/shop/publications/order

v Per contattare un rivenditore IBM locale, visitare la pagina IBM Directory of Worldwide Contacts all’indirizzo

www.ibm.com/planetwide

Per ordinare le pubblicazioni DB2 da DB2 Marketing and Sales negli Stati Uniti o Canada, chiamare il numero

1-800-IBM-4YOU (426-4968).

Quando si inviano informazioni all’IBM, si garantisce il diritto non esclusivo all’IBM di utilizzo o distribuzione di

queste informazioni nel modo ritenuto più opportuno senza alcun obbligo nei confronti dell’utente.

© Copyright International Business Machines Corporation 1999 - 2006. Tutti i diritti riservati.

Page 5: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Indice

Informazioni su questa guida . . . . . vii

A chi è rivolta questa guida . . . . . . . . . vii

Come ottenere una versione corrente di questa

guida . . . . . . . . . . . . . . . . vii

Come utilizzare questa guida . . . . . . . . vii

Convenzioni di evidenziazione . . . . . . . viii

Parte 1. Introduzione . . . . . . . . 1

Capitolo 1. Introduzione . . . . . . . . 3

Introduzione a XML Extender . . . . . . . . 3

Documenti XML . . . . . . . . . . . . . 3

Gestione dei dati XML in DB2 . . . . . . . . 4

Funzioni di XML Extender . . . . . . . . . . 5

Lezioni del supporto didattico di XML Extender . . 6

Lezione: Memorizzazione di un documento XML in

una colonna . . . . . . . . . . . . . . 7

Lezione: Composizione di un documento XML . . 17

Parte 2. Amministrazione . . . . . . 33

Capitolo 2. Amministrazione . . . . . 35

Strumenti di gestione per XML Extender . . . . 35

Preparazione alla gestione di XML Extender . . . 35

Migrazione di XML Extender da versioni o release

precedenti . . . . . . . . . . . . . . . 35

Panoramica sulla gestione di XML Extender . . . 36

Wizard di gestione di XML Extender . . . . . . 36

Metodi di accesso e memorizzazione . . . . . . 36

Quando utilizzare il metodo delle colonne XML . . 38

Quando utilizzare il metodo di raccolta XML . . . 38

Pianificazione di colonne XML . . . . . . . . 38

Tipi di dati XML per le colonne XML . . . . . 38

Elementi e attributi da indicizzare per colonne

XML . . . . . . . . . . . . . . . . 39

Il file DAD file per le colonne XML . . . . . 39

Pianificazione per le raccolte XML . . . . . . . 40

Convalida . . . . . . . . . . . . . . 40

File DAD per le raccolte XML . . . . . . . 40

Schemi di associazione per raccolte XML . . . 42

Tipi di schemi di associazione . . . . . . 43

Requisiti dello schema di associazione . . . 45

Requisiti della dimensione della tabella di

decomposizione per l’associazione del nodo RDB . 50

Convalida automatica dei documenti XML . . . . 50

Abilitare i server del database per XML . . . . . 51

Creazione di una tabella XML . . . . . . . . 52

Memorizzazione di DTD nella tabella di repository 52

Abilitazione di colonne XML . . . . . . . . 53

Pianificazione di tabelle laterali . . . . . . . . 57

Indicizzazione delle tabelle laterali . . . . . . 58

Composizione dei documenti XML utilizzando

l’associazione SQL . . . . . . . . . . . . 59

Composizione di raccolte XML utilizzando

l’associazione RDB_node . . . . . . . . . . 62

Decomposizione di una raccolta XML utilizzando

l’associazione RDB_node . . . . . . . . . . 66

Parte 3. Programmazione . . . . . 71

Capitolo 3. Colonne XML . . . . . . . 73

Gestione di dati nelle colonne XML . . . . . . 73

Colonne XML come metodo di accesso e di

memorizzazione . . . . . . . . . . . . . 74

Definizione ed abilitazione di una colonna XML . . 75

Uso di indici per i dati delle colonne XML . . . . 75

Memorizzazione di dati XML . . . . . . . . 76

Funzioni casting predefinite per la

memorizzazione di dati XML . . . . . . . 77

UDF di memorizzazione per la memorizzazione

di dati XML . . . . . . . . . . . . . 77

Metodo per richiamare un documento XML . . . 78

Richiamo di un interno documento XML . . . 79

Funzioni di casting predefinite per il richiamo

dei dati XML . . . . . . . . . . . . 79

Utilizzo dell’UDF Content() per il richiamo dei

dati XML . . . . . . . . . . . . . 79

Richiamo dei valori di attributo e del contenuto

di un elemento da documenti XML . . . . . 81

Aggiornamento dati XML . . . . . . . . . 82

Aggiornamento di un intero documento XML . . 83

Aggiornamento con una funzione cast

predefinita . . . . . . . . . . . . . 83

Aggiornamento dei documenti XML con una

memorizzazione UDF . . . . . . . . . 83

Aggiornamento di elementi e attributi specifici di

un documento XML . . . . . . . . . . 83

Metodi per la ricerca di documenti XML . . . . 84

Ricerca nel documento XML in base alla struttura 85

Esempio: ricerca mediante una interrogazione

diretta sulle tabelle laterali . . . . . . . 85

Esempio: ricerca mediante una vista join . . 85

Esempio: ricerca mediante le UDF di

estrazione . . . . . . . . . . . . . 86

Esempio: ricerca su elementi o attributi con

ricorrenza multipla . . . . . . . . . . 86

Eliminazione di documenti XML . . . . . . . 86

Limitazioni durante l’invocazione delle funzioni da

JDBC (Java Database) . . . . . . . . . . . 87

Capitolo 4. Gestione di dati nelle

raccolte XML . . . . . . . . . . . . 89

Raccolte XML come metodo di accesso e di

memorizzazione . . . . . . . . . . . . . 89

Gestione di dati in raccolte XML . . . . . . . 90

Preparazione alla composizione di documenti

XML da dati DB2 . . . . . . . . . . . 90

© Copyright IBM Corp. 1999 - 2006 iii

Page 6: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Composizione di documenti mediante

dxxGenXML . . . . . . . . . . . . 90

Composizione di documenti mediante

dxxRetrieveXML . . . . . . . . . . . 92

Decomposizione di documenti XML in dati di

database DB2 . . . . . . . . . . . . . . 94

Abilitazione di una raccolta XML per la

decomposizione . . . . . . . . . . . . 97

Limiti di dimensione delle tabelle di

decomposizione . . . . . . . . . . . . 97

Aggiornamento ed eliminazione di dati in raccolte

XML . . . . . . . . . . . . . . . . . 98

Aggiornamento di dati in una raccolta XML . . 98

Aggiornamento di elementi e di valori di

attributi . . . . . . . . . . . . . 98

Eliminazione di istanze di elementi e attributi 99

Eliminazione di un documento XML da una

raccolta XML . . . . . . . . . . . . . 99

Ricerca delle raccolte XML . . . . . . . . . 100

Composizione dei documenti XML utilizzando i

criteri di ricerca . . . . . . . . . . . 100

Ricerca dei dati XML decomposti . . . . . . 101

Schemi di associazione per raccolte XML . . . . 101

Requisiti per l’utilizzo dell’associazione SQL . . . 104

Requisiti per l’associazione RDB_Node . . . . . 106

Fogli di stile per una raccolta XML . . . . . . 109

Percorsi di posizioni . . . . . . . . . . . 110

Sintassi del percorso della posizione . . . . . . 111

Abilitazione di raccolte XML . . . . . . . . 112

Disabilitazione delle raccolte XML . . . . . . 114

Capitolo 5. Schemi XML . . . . . . . 117

Vantaggi dell’utilizzo di schemi XML al posto dei

DTD . . . . . . . . . . . . . . . . 117

Elemento complexType dello schema XML . . . 117

Tipi di dati, elementi e attributi negli schemi . . . 118

Tipi di dati semplici in schemi XML . . . . . 118

Elementi in schemi XML . . . . . . . . . 119

Attributi in schemi XML . . . . . . . . . 119

Esempi di uno schema XML . . . . . . . . 119

Istanza di un documento XML mediante lo

schema . . . . . . . . . . . . . . 120

Istanza di un documento XML mediante un

DTD . . . . . . . . . . . . . . . 121

Parte 4. Riferimento . . . . . . . 123

Capitolo 6. Comando di gestione

dxxadm . . . . . . . . . . . . . . 125

Panoramica sul comando dxxadm . . . . . . 125

Sinstassi del comando di gestione dxxadm . . . 125

Opzioni del comando di gestione . . . . . . . 125

Opzione enable_db del comando dxxadm . . . 126

Opzione disable_db del comando dxxadm . . . 127

Opzione enable_column del comando dxxadm 128

Opzione disable_column del comando dxxadm 129

Opzione enable_collection del comando dxxadm 130

Opzione disable_collection del comando

dxxadm . . . . . . . . . . . . . . 131

Capitolo 7. Tipi definiti dall’utente di

XML Extender . . . . . . . . . . . 133

Capitolo 8. Funzioni definite

dall’utente di XML Extender . . . . . 135

Tipi di funzioni definite dall’utente di XML

Extender . . . . . . . . . . . . . . . 135

Nomi di UDT e UDF per XML Extender . . . . 136

Funzioni di memorizzazione . . . . . . . . 136

Panoramica sulle funzioni di memorizzazione in

XML Extender . . . . . . . . . . . . 136

Funzione XMLCLOBFromFile() . . . . . . 136

Funzione XMLFileFromCLOB() . . . . . . 137

Funzione XMLFileFromVarchar() . . . . . . 138

Funzione XMLVarcharFromFile() . . . . . . 139

Funzioni di richiamo . . . . . . . . . . . 139

Funzioni di richiamo in XML Extender . . . . 139

Content(): retrieve da XMLFILE su un CLOB 140

Content(): retrieve da XMLVARCHAR su un file

di server esterno . . . . . . . . . . . 141

Content(): retrieval da XMLCLOB su un file di

server esterno . . . . . . . . . . . . 142

Funzioni di estrazione . . . . . . . . . . 143

Funzioni di estrazione in XML Extender . . . 143

extractInteger() ed extractIntegers() . . . . . 144

extractSmallint() ed extractSmallints() . . . . 145

extractDouble() ed extractDoubles() . . . . . 146

extractReal() ed extractReals() . . . . . . . 147

extractChar() ed extractChars() . . . . . . 148

extractVarchar() ed extractVarchars() . . . . . 149

extractCLOB() ed extractCLOBs() . . . . . . 151

extractDate() ed extractDates() . . . . . . . 152

extractTime() ed extractTimes() . . . . . . 153

extractTimestamp() ed extractTimestamps() . . 154

Funzioni di aggiornamento in XML Extender . . . 155

Modalità di elaborazione del documento da

parte della funzione Update() . . . . . . . 158

Ricorrenze multiple . . . . . . . . . . 160

funzioni di convalida . . . . . . . . . . . 161

Funzione SVALIDATE() . . . . . . . . . 161

Sintassi . . . . . . . . . . . . . 161

Parametri . . . . . . . . . . . . . 161

Esempi . . . . . . . . . . . . . 162

Funzione DVALIDATE() . . . . . . . . . 162

Sintassi . . . . . . . . . . . . . 163

Parametri . . . . . . . . . . . . . 163

Esempi . . . . . . . . . . . . . 163

Capitolo 9. File DAD (document

access definition) . . . . . . . . . 165

Creazione di un file DAD per colonne XML . . . 165

File DAD per le raccolte XML . . . . . . . . 167

Composizione SQL . . . . . . . . . . 169

Composizione di nodi RDB . . . . . . . . 169

Composizione da righe che hanno valori null 170

DTD per il file DAD . . . . . . . . . . . 171

Sovrascrittura dinamica di valori nel file DAD . . 175

iv XML Extender - Amministrazione e programmazione

Page 7: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 10. Procedure memorizzate

di XML Extender . . . . . . . . . . 183

Procedure memorizzate di XML Extender -

Panoramica . . . . . . . . . . . . . . 183

Richiamo delle procedure memorizzate XML

Extender . . . . . . . . . . . . . . . 183

Procedure memorizzate che restituiscono CLOB 184

Procedure memorizzate di gestione di XML

Extender . . . . . . . . . . . . . . . 186

Procedure memorizzate di gestione di XML

Extender - Panoramica . . . . . . . . . 186

Procedura memorizzata dxxEnableDB() . . . . 186

Procedura memorizzata dxxDisableDB() . . . 187

Procedura memorizzata dxxEnableColumn() . . 187

Procedura memorizzata dxxDisableColumn() 189

Procedura memorizzata dxxEnableCollection() 189

Procedura memorizzata dxxDisableCollection() 190

Procedure memorizzate di composizione di XML

Extender . . . . . . . . . . . . . . . 191

Procedure memorizzate di composizione di

XML Extender - Panoramica . . . . . . . 191

Procedura memorizzata dxxGenXML() . . . . 191

Procedura memorizzata dxxRetrieveXML() . . 194

Procedura memorizzata dxxGenXMLClob . . . 197

Procedura memorizzata dxxRetrieveXMLClob 200

Procedure memorizzate di decomposizione di XML

Extender . . . . . . . . . . . . . . . 202

Procedure memorizzate di decomposizione di

XML Extender - Panoramica . . . . . . . 202

Procedura memorizzata dxxShredXML() . . . 202

Procedura memorizzata dxxInsertXML() . . . 203

Capitolo 11. Procedure memorizzate e

funzioni di XML Extender per

MQSeries . . . . . . . . . . . . . 207

Procedure memorizzate XML Extender e funzioni

per MQSeries - Panoramica . . . . . . . . . 207

Funzioni MQSeries per XML Extender . . . . . 208

Funzioni MQSeries di XML Extender -

Panoramica . . . . . . . . . . . . . 208

Funzione MQPublishXML . . . . . . . . 208

Funzione MQReadXML . . . . . . . . . 210

Funzione MQReadAllXML . . . . . . . . 212

Funzione MQReadXMLCLOB . . . . . . . 214

Funzione MQReadAllXMLCLOB . . . . . . 215

Funzione MQReceiveXML . . . . . . . . 217

Funzione MQReceiveAllXML . . . . . . . 219

Funzione MQRcvAllXMLCLOB . . . . . . 221

Funzione MQReceiveXMLCLOB . . . . . . 223

Funzione MQRcvXMLCLOB . . . . . . . 224

Funzione MQSENDXML . . . . . . . . 225

Funzione MQSENDXMLFILE . . . . . . . 226

Funzione MQSendXMLFILECLOB . . . . . 228

Procedure memorizzate di MQSeries per XML

Extender . . . . . . . . . . . . . . . 229

XML Extender MQSeries procedure

memorizzate - Panoramica . . . . . . . . 229

Procedura memorizzata dxxmqGen() . . . . 232

Procedura memorizzata dxxmqGenCLOB . . . 234

Procedura memorizzata dxxmqRetrieve . . . 236

Procedura memorizzata dxxmqRetrieveCLOB 239

Procedura memorizzata dxxmqShred . . . . 241

Procedura memorizzata dxxmqShredAll . . . 242

Procedura memorizzata dxxmqShredCLOB . . 244

Procedura memorizzata dxxmqShredAllCLOB 245

Procedura memorizzata dxxmqInsert . . . . 246

Procedura memorizzata dxxmqInsertCLOB . . 248

Procedura memorizzata dxxmqInsertAll . . . 250

Procedura memorizzata dxxmqInsertAllCLOB 251

Capitolo 12. XSLT (extensible

stylesheet language transformation) . 255

Creazione di un documento HTML utilizzando un

foglio di stile XSLT . . . . . . . . . . . 255

Funzione XSLTransformToClob() definita

dall’utente . . . . . . . . . . . . . . 256

Funzione XSLTransformToFile() definita dall’utente 257

Capitolo 13. Tabelle del supporto di

gestione di XML Extender . . . . . . 261

Tabella di riferimento DTD . . . . . . . . . 261

Tabella di utilizzo XML (XML_USAGE) . . . . . 261

Capitolo 14. Risoluzione dei problemi 263

Risoluzione dei problemi relativi a XML Extender 263

Avvio della traccia per XML Extender . . . . . 263

Arresto della traccia . . . . . . . . . . . 264

Codici di ritorno delle UDF di XML Extender . . 264

Codici di ritorno delle procedure memorizzate di

XML Extender . . . . . . . . . . . . . 265

Codici SQLSTATE e numeri di messaggi associati

per XML Extender . . . . . . . . . . . . 265

Messaggi di XML Extender . . . . . . . . . 270

Appendice A. Esempi . . . . . . . . 287

Esempio DTD XML . . . . . . . . . . . 287

Esempio di documento XML: getstart.xml . . . . 287

Esempio di foglio di stile: getstart.xsl . . . . . 288

File DAD (document access definition) . . . . . 289

File DAD di esempio: colonna XML . . . . . 290

File DAD di esempio: raccolta XML,

associazione SQL . . . . . . . . . . . 290

File DAD di esempio: associazione RDB_node 292

Appendice B. Considerazioni sulla

codepage . . . . . . . . . . . . . 295

Terminologia per le codepage XML . . . . . . 295

Considerazioni sulla codepage di DB2 e XML

Extender . . . . . . . . . . . . . . . 296

Considerazioni per l’importazione di un

documento XML . . . . . . . . . . . 296

Considerazioni per l’esportazione di un

documento XML . . . . . . . . . . . 297

Considerazioni sulla dichiarazione di codifica per

XML Extender . . . . . . . . . . . . . 297

Dichiarazioni di codifica valide . . . . . . 297

Codifiche e dichiarazioni di codifica coerenti 298

Dichiarazione di una codifica . . . . . . . 300

Esempi di conversione . . . . . . . . . . 300

Indice v

Page 8: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Suggerimenti per evitare documenti XML non

coerenti . . . . . . . . . . . . . . . 302

Appendice C. Limiti di XML Extender 305

Glossario di XML Extender . . . . . 309

Informazioni particolari . . . . . . . 317

Marchi . . . . . . . . . . . . . . . 319

Indice analitico . . . . . . . . . . . 321

Come ottenere ulteriori informazioni

dalla IBM . . . . . . . . . . . . . 327

vi XML Extender - Amministrazione e programmazione

Page 9: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Informazioni su questa guida

Questa sezione contiene le seguenti informazioni:

v “A chi è rivolta questa guida”

v “Come utilizzare questa guida”

v “Convenzioni di evidenziazione” a pagina viii

A chi è rivolta questa guida

Questa guida è intesa per i seguenti utenti:

v Gli utenti che operano con i dati XML nelle applicazioni DB2® e chi ha

familiarità con i concetti XML. I lettori di questo documento devono avere una

comprensione generale di XML e DB2. Per ulteriori informazioni su XML,

consultare il seguente sito Web:

http://www.w3.org/XML

Per ulteriori informazioni su DB2, consultare il seguente sito Web:

http://www.ibm.com/software/data/db2/library

v Gli amministratori del database DB2 che hanno familiarità con i concetti,

strumenti e tecniche di amministrazione del database DB2.

v I programmatori dell’applicazione DB2 che hanno familiarità con SQL e con uno

o più linguaggi di programmazione che è possibile utilizzare per le applicazioni

DB2.

Come ottenere una versione corrente di questa guida

È possibile reperire la versione aggiornata di questa guida sul sito Web di XML

Extender:

http://www.ibm.com/software/data/db2/extenders/xmlext/library.html

Come utilizzare questa guida

Questa guida è strutturata nel modo seguente:

Parte 1. Introduzione

Questa parte fornisce una panoramica di XML Extender e come è possibile

utilizzarla nelle applicazioni aziendali. Contiene uno scenario di

introduzione che consente l’esecuzione.

Parte 2. Amministrazione

Questa parte descrive come preparare e gestire un database DB2 per i dati

XML. Consultare questa parte se è necessario gestire un database DB2 che

contiene i dati XML.

Parte 3. Programmazione

Questa parte descrive come gestire i dati XML. Consultare questa parte se

è necessario accedere e gestire i dati XML in un programma applicativo del

database DB2.

Parte 4. Riferimento

Questa parte descrive come utilizzare i comandi di amministrazione di

XML Extender, i tipi personalizzati, le funzioni personalizzate e le

procedure memorizzate. Elenca anche i messaggi e i codici emessi da XML

© Copyright IBM Corp. 1999 - 2006 vii

Page 10: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Extender. Consultare questa parte se si ha familiarità con le attività ed i

concetti di XML Extender, ma sono necessarie le informazioni su un tipo

personalizzato (UDT), funzione personalizzata (UDF), comando, messaggio,

tabelle di metadati, tabelle di controllo o codice.

Parte 5. Appendici

Le appendici descrivono DTD per la definizione di accesso del documento,

esempi e limiti di XML Extender.

Convenzioni di evidenziazione

Questa guida utilizza le seguenti convenzioni:

Il testo in grassetto indica:

v Comandi

v Nomi di campi

v Nomi di menu

v Pulsanti

Il testo in corsivo indica

v I parametri di variabili che devono essere sostituiti con un valore

v Parole enfatizzate

v Primo utilizzo di un termine del glossario

Le lettere in maiuscolo indicano:

v Tipi di dati

v Nomi colonna

v Nomi tabelle

Il testo di esempio indica:

v Messaggi del sistema

v Valori immessi

v Esempi di codifica

v Nomi di directory

v Nomi file

viii XML Extender - Amministrazione e programmazione

Page 11: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Parte 1. Introduzione

Questa parte fornisce una panoramica su XML Extender e su come utilizzarlo con

le proprie applicazioni aziendali.

© Copyright IBM Corp. 1999 - 2006 1

Page 12: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

2 XML Extender - Amministrazione e programmazione

Page 13: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 1. Introduzione

Introduzione a XML Extender

DB2® XML Extender consente di memorizzare e accedere a documenti XML per

generare documenti XML da dati relazionali esistenti e per inserire righe in tabelle

relazionali da documenti XML. XML Extender fornisce nuovi tipi di dati, funzioni

e procedure memorizzate per gestire i dati XML in DB2.

XML Extender è disponibile per le seguenti piattaforme. Fare riferimento ai

requisiti di installazione DB2 per determinare i livelli di sistemi operativi

supportati.

v Windows Server su una piattaforma Intel a 32-bit

v AIX® su una piattaforma a 32-bit per le funzioni client di XML Extender

v AIX® su una piattaforma a 64-bit

v Solaris™ Operating Environment su una piattaforma a 32-bit per le funzioni

client di XML Extender

v Solaris™ Operating Environment su una piattaforma a 64-bit

v Linux su una piattaforma a 32-bit con architettura x86

v Linux su una piattaforma a 64-bit con architettura x86

v HP-UX su una piattaforma PA-RISC a 32-bit per le funzioni client di XML

Extender

v HP-UX su una piattaforma PA-RISC a 64-bit

v z/OS™

v i5/OS™

Argomenti correlati:

v “Lezioni del supporto didattico di XML Extender” a pagina 6

v “Funzioni di XML Extender” a pagina 5

v “Lezione: Composizione di un documento XML” a pagina 17

v “Lezione: Memorizzazione di un documento XML in una colonna” a pagina 7

v “Documenti XML”

Documenti XML

Poiché le aziende tendono a condividere i dati tra diverse applicazioni, si verifica il

problema di dover replicare, trasformare, esportare o salvare i dati in formati che

possano essere importati in altre applicazioni. Molti di questi processi di

trasformazione tendono a eliminare parte dei dati o costringono gli utenti a

eseguire processi di verifica dell’integrità dei dati. Questo controllo manuale

richiede un tempo notevole ed è molto costoso.

Un modo per risolvere questo problema sta nello sviluppare applicazioni ODBC

(Open Database Connectivity), un’API (application programming interface) standard

per l’accesso ai dati su sistemi di gestione di database relazionali e non. Tali

applicazioni salvano i dati in un sistema di gestione database. Da tale sistema, i

dati possono essere modificati e presentati nel formato necessario alle varie

applicazioni. È necessario scrivere le applicazioni del database per poter convertire

© Copyright IBM Corp. 1999 - 2006 3

Page 14: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

i dati nel formato richiesto dall’applicazione. Le applicazioni vengono modificate

molto rapidamente e altrettanto rapidamente diventano obsolete. Le applicazioni

che convertono i dati in HTML forniscono soluzioni di presentazione, ma nella

pratica i dati presentati non possono essere utilizzati per altri scopi. È quindi

necessario un metodo che separi i dati dalla presentazione in modo da fornire un

formato pratico che possa essere scambiato tra le applicazioni.

XML (eXtensible Markup Language) risolve questo problema. XML è estensibile in

quanto il linguaggio è un linguaggio meta che consente di creare il proprio

linguaggio in base alle necessità. XML viene utilizzato per catturare non solo i dati

per la particolare applicazione, ma anche l’intera struttura dati. Sebbene questo

non sia l’unico formato di scambio dati, XML è diventato lo standard accettato.

Aderendo a questo standard, le applicazioni possono condividere i dati senza

prima trasformarli utilizzando i formati proprietari.

Poiché XML è lo standard per lo scambio di dati, molte applicazioni lo utilizzano.

Si assuma di utilizzare una determinata applicazione di gestione progetti e di voler

condividere parte dei dati con l’applicazione calendario. L’applicazione di gestione

progetti può esportare le attività in XML, che possono quindi essere importate

nell’applicazione calendario senza dover effettuare alcuna altra operazione. Sul

mercato odierno, i provider ricevono forti incentivi per rendere un formato di

scambio quale XML una funzione di base delle proprie applicazioni.

Gestione dei dati XML in DB2

Nonostante XML risolva molti problemi fornendo un formato standard per lo

scambio di dati, si verificano lo stesso alcuni problemi. Quando si crea

un’applicazione di dati enterprise, è necessario rispondere a domande del tipo:

v Quanto spesso è necessario effettuare le replica dei dati?

v Che tipo di informazioni devono essere condivise tra le applicazioni?

v Come è possibile ricercare rapidamente le informazioni necessarie?

v Come eseguire una determinata azione, come l’aggiunta di una nuova voce o il

richiamo dello scambio automatico di dati tra tutte le applicazioni?

Questi tipi di problemi possono essere risolti solo da un sistema di gestione

database. Incorporando le informazioni XML e le meta-informazioni direttamente

nel database, è possibile ottenere in maniera più efficiente i risultati XML necessari

alle altre applicazioni. Con XML Extender, è possibile sfruttare i vantaggi di DB2®

in molte applicazioni XML.

Con il contenuto dei documenti XML strutturati in un database DB2, è possibile

combina re le informazioni XML strutturate con i dati relazionali strutturati. In

base all’applicazione, è possibile decidere se memorizzare interi documenti XML in

DB2 nei tipi definiti dall’utente per i dati XML (tipi di dati XML) oppure è

possibile associare il contenuto XML come tipi di dati di base nelle tabelle

relazionali. Per i tipi di dati XML, XML Extender aggiunge la possibilità di

aggiungere tipi di dati avanzati di valori di attributi o elementi XML oltre alla

possibilità di eseguire ricerche di testo strutturale fornite da DB2 Database™.

XML Extender fornisce due metodi per la memorizzazione e l’accesso ai dati XML

in DB2:

Metodo delle colonne XML

4 XML Extender - Amministrazione e programmazione

Page 15: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Questo metodo memorizza interi documenti XML come dati di colonna o

esternamente come un file ed estrae il valore dell’attributo o dell’elemento

XML richiesto e lo memorizza in tabelle laterali, che sono tabelle indicizzate

per le ricerche rapide. Memorizzando i documenti come dati di colonna, è

possibile:

v Eseguire ricerche rapide su elementi o attributi XML che sono stati

estratti e memorizzati nelle tabelle laterali come tipi di dati di base SQL

indicizzate.

v Aggiornare il contenuto di un elemento XML o del valore di un attributo

XML.

v Estrarre gli elementi o gli attributi XML in maniera dinamica mediante

interrogazioni SQL.

v Convalidare documenti XML quando vengono inseriti o aggiornati.

v Eseguire ricerche di testo strutturale con Net Search Extender.

Metodo di raccolta XML

Compone e decompone il contenuto di documenti XML con una o più

tabelle relazionali.

Funzioni di XML Extender

XML Extender fornisce le seguenti funzioni per gestire e utilizzare i dati XML

conDB2®:

v Risorse di amministrazione che consentono di gestire l’integrazione dei dati

XML nelle tabelle relazionali

v Metodi di memorizzazione e accesso per i dati XML all’interno del database

v Un repository DTD (data type definition) per memorizzare i DTD

v La possibilità di convalidare i documenti XML utilizzando un DTD o uno

schema

v Un file di associazione detto DAD (Document Access Definition), utilizzato per

associare i documenti XML ai dati relazionali

v I percorsi per specificare la posizione di un elemento o di un attributo all’interno

di un documento XML

Risorse di amministrazione: le risorse di amministrazione di XML Extender

consentono di abilitare il database e le colonne delle tabelle per XML e di associare

i dati XML alle strutture relazionali DB2.

È possibile utilizzare le seguenti risorse per completare le attività di gestione per

XML Extender:

v Il comando dxxadm fornisce un’opzione della riga comandi per le attività di

gestione.

v Le procedure memorizzate di gestione di XML Extender consentono all’utente di

richiamare i comandi di gestione da un programma.

Metodi di accesso e memorizzazione: XML Extender fornisce due metodi di

accesso e memorizzazione per l’integrazione di documenti XML con le strutture di

dati DB2: la colonna XML e la raccolta XML. Questi metodi possono essere

utilizzati in maniere molto differenti, ma sempre nella stessa applicazione.

Metodo delle colonne XML

Questo metodo consente di memorizzare i documenti XML in DB2. Esso è

utile anche per l’archiviazione dei documenti. I documenti vengono inseriti

Capitolo 1. Introduzione 5

Page 16: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

in colonne abilitate per XML e possono essere aggiornati, richiamati e

ricercati. I dati di elementi e attributi possono essere associati a tabelle DB2

(tabelle laterali), che possono essere indicizzate per ricerche rapide.

Metodo di raccolta XML

Questo metodo consente di associare le strutture di documenti XML alle

tabelleDB2 in modo da poter comporre i documenti XML da dati DB2

esistenti oppure decomporre i documenti memorizzando i dati senza tag

nelle tabelle DB2. Questo metodo è ottimo per le applicazioni di scambio

dati, in particolare quando il contenuto dei documenti XML viene

aggiornato frequentemente.

DTD: XML Extender consente di memorizzare i DTD, la serie di dichiarazioni per

elementi e attributi XML. Quando un di database è abilitato per XML, viene creata

una tabella di repository DTD (DTD_REF). Ogni riga di questa tabella rappresenta

un DTD con ulteriori informazioni sui metadati. Gli utenti possono accedere a

questa tabella per inserire i propri DTD. I DTD vengono utilizzati per la convalida

della struttura di documenti XML.

File DAD: è possibile specificare il modo in cui i documenti XML strutturati

devono essere elaborati da XML Extender mediante un file DAD (document access

definition). Il file DAD è un documento XML che associa la struttura XML a una

tabella DB2. Un file DAD viene utilizzato quando si memorizzano i documenti

XML in una colonna o quando si compongono o decompongono dati XML. I file

DAD specifica se i documenti vengono memorizzati mediante il metodo delle

colonne XML o definendo una raccolta XML per la composizione o la

decomposizione.

Argomenti correlati:

v “Lezioni del supporto didattico di XML Extender”

v “Lezione: Composizione di un documento XML” a pagina 17

v “Lezione: Memorizzazione di un documento XML in una colonna” a pagina 7

v “Gestione dei dati XML in DB2” a pagina 4

Lezioni del supporto didattico di XML Extender

Questo supporto didattico mostra come iniziare a utilizzare XML per accedere e

modificare i dati XML per le proprie applicazioni. Sono fornite tre lezioni:

v Memorizzazione di un documento XML in una colonna XML

v Composizione di un documento XML

v Cleanup del database

Seguendo queste lezioni del supporto didattico, sarà possibile impostare un

database utilizzando i dati di esempio forniti, associare i dati SQL a un documento

XML, memorizzare i documenti XML nel database e ricercare ed estrarre i dati dai

documenti XML.

Nelle lezioni verrà utilizzato la finestra dei comandi DB2® con comandi di

gestione, UDF e procedure memorizzate di XML Extender. La maggior parte degli

esempi riportati in questo manuale si basano sui dati di esempio utilizzati in

questa sezione.

In queste lezioni, l’utente lavora per ACME Auto Direct, un’azienda che

distribuisce automobili e mezzi pensanti alle concessionarie automobilistiche.

Vengono eseguite due attività. Per prima cosa, viene impostato un sistema in cui è

6 XML Extender - Amministrazione e programmazione

Page 17: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

possibile archiviare gli ordini nel database SALES_DB che può essere consultato

dal reparto vendite. Successivamente, le informazioni vengono estratte in un

database di ordini di acquisto esistente, denominato SALES_DB.

Prerequisiti

Per completare le lezioni riportate in questo supporto didattico, è necessario che

siano installati i seguenti prerequisiti:

v DB2 Versione 9.1 con la funzione XML Extender

Inoltre, il server di database DB2 deve essere stato abilitato dall’amministratore

DB2.

Lezione: Memorizzazione di un documento XML in una colonna

XML Extender fornisce un metodo per la memorizzazione e l’accesso a interi

documenti XML nel database . Il metodo delle colonne XML consente di

memorizzare il documento mediante i tipi di file XML, l’indicizzazione della

colonna nelle tabelle laterali e interrogando o ricercando quindi il documento XML.

Questo metodo di memorizzazione è particolarmente utile per l’archiviazione di

applicazioni in cui i documenti non vengono aggiornati molto frequentemente.

Questa lezione mostra come utilizzare il metodo di accesso e memorizzazione della

colonna XML.

Lo scenario: all’utente viene assegnata l’attività di archiviazione dei dati sulle

vendite per il reparto dei servizi. I dati sulle vendite necessari sono memorizzati in

documenti XML che utilizzano la stessa DTD.

Il reparto dei servizi ha fornito una struttura consigliata per i documenti XML e ha

specificato i dati di elementi che verranno interrogati più frequentemente. Il

reparto vuole che i documenti XML vengano memorizzati nella tabella SALES_TAB

nel database SALES_DB e che sia possibile accedervi molto rapidamente. La tabella

SALES_TAB conterrà due colonne con i dati relativi a ogni vendita e una terza

colonna che conterrà il documento XML. Questa colonna è denominata ORDER.

Per memorizzare questo documento XML nella tabella SALES_TAB, sarà

necessario:

1. Memorizzare il documento come un tipo di dati XMLVARCHAR e determinare

gli elementi e gli attributi XML che verranno interrogati frequentemente.

2. Impostare il database SALES_DB per XML.

3. Creare la tabella SALES_TAB e abilitare la colonna ORDER in modo che sia

possibile memorizzare il documento inalterato in DB2®.

4. Inserire un DTD per la convalida del documento XML

Quando si abilita la colonna, verranno definite le tabelle laterali da indicizzare per

la ricerca strutturale del documento in un file DAD (document access definition),

un documento XML che specifica la struttura delle tabelle laterali.

La tabella SALES_TAB viene descritta in Tabella 1 a pagina 8. La colonna da

abilitare per XML, ORDER, è riportata in corsivo.

Capitolo 1. Introduzione 7

Page 18: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 1. Tabella SALES_TAB

Nome colonna Tipo di dati

INVOICE_NUM CHAR(6) NOT NULL PRIMARY KEY

SALES_PERSON VARCHAR(20)

ORDER XMLVARCHAR

Script ed esempi:

Per questo supporto didattico, verrà utilizzata una serie di script per impostare

l’ambiente ed eseguire le operazioni riportate in questa lezione. Tali script si

trovano nella directory install_dxx/samples/extenders/db2xml/cmd (dove

install_dxx è la directory in cui sono stati installati i file XML Extender) .

Tali script sono:

getstart_db.cmd

Crea il database e inserisce i dati in quattro tabelle.

getstart_prep.cmd

Collega il di database alle procedure memorizzate di XML Extender e

abilita il di database per XML Extender.

getstart_insertDTD.cmd

Inserisce la DTD utilizzata per convalidare il documento XML nella

colonna XML.

getstart_createTabCol.cmd

Crea una tabella dell’applicazione che avrà la colonna abilitata per XML.

getstart_alterTabCol.cmd

Modifica la tabella dell’applicazione aggiungendo la colonna che verrà

abilitata per XML.

getstart_enableCol.cmd

Abilita la colonna XML.

getstart_createIndex.cmd

Crea gli indici sulle tabelle laterali per la colonna XML.

getstart_insertXML.cmd

Inserisce il documento XML nella colonna XML.

getstart_queryCol.cmd

Esegue un’istruzione select sulla tabella dell’applicazione e restituisce il

documento XML.

getstart_stp.cmd

Esegue la procedura memorizzata per comporre la raccolta XML.

getstart_exportXML.cmd

Esporta il documento XML dal database per utilizzarlo in un’applicazione.

getstart_clean.cmd

Cancella l’ambiente del supporto didattico.

Pianificazione della memorizzazione del documento:

Prima di utilizzare XML Extender per memorizzare i documenti, è necessario:

v Comprendere la struttura dei documenti XML.

8 XML Extender - Amministrazione e programmazione

Page 19: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v Determinare il tipo definito dall’utente XML in cui memorizzare il documento

XML.

v Determinare gli elementi e gli attributi XML che verranno ricercati

frequentemente dal reparto di servizio, in modo che il relativo contenuto possa

essere memorizzato in tabelle laterali e indicizzato per migliorare le prestazioni.

Nelle seguenti sezioni viene descritto come prendere queste decisioni.

Struttura dei documenti XML:

La struttura dei documenti XML per questa lezione utilizza le informazioni per un

ordine specifico strutturato con la chiave dell’ordine come livello superiore e poi

subito dopo le informazioni sul cliente, la parte e la spedizione nei livelli

successivi.

Questa lezione fornisce la DTD di esempio per comprendere e convalidare la

struttura di documenti XML.

Determinazione del tipo di dati XML per la colonna XML:

XML Extender fornisce i tipi definiti dall’utente XML che è possibile utilizzare per

definire una colonna per contenere i documenti XML. Questi tipi di dati sono:

XMLVARCHAR

Utilizzo per documenti di dimensione inferiore a 3 kilobyte memorizzati in

DB2. La dimensione massima dei documenti XMLVARCHAR può essere

ridefinita in modo da essere 32672 byte.

XMLCLOB

Utilizzo per documenti di dimensione maggiore a 3 kilobyte memorizzati

in DB2. La dimensione massima dei documenti è 2 gigabyte.

XMLFILE

Utilizzato per i documenti memorizzati all’esterno di DB2.

In questa lezione, verrà memorizzato un piccolo documento in DB2, pertanto verrà

utilizzato il tipo di dati XMLVARCHAR.

Determinazione degli elementi e degli attributi in cui eseguire la ricerca:

Una volta nota la struttura di documenti XML e dopo aver compreso i requisiti

dell’applicazione, è possibile determinare gli elementi e gli attributi in cui verranno

eseguite ricerche frequentemente. Il reparto dei servizi interrogherà frequentemente

i campi della chiave dell’ordine, del nome del cliente, del prezzo e della data di

spedizione di un ordine e saranno richieste prestazioni elevate per tali ricerche.

Queste informazioni sono contenute negli elemento e negli attributi del documento

XML. Tabella 2 descrive i percorsi delle posizioni di ogni elemento e attributo.

Tabella 2. Elementi ed attributi in cui eseguire la ricerca

Dati Percorso posizione

chiave dell’ordine /Order/@Key

nome cliente /Order/Customer/Name

prezzo /Order/Part/ExtendedPrice

data di spedizione /Order/Part/Shipment/ShipDate

Associazione del documento XML alle tabelle laterali:

Capitolo 1. Introduzione 9

Page 20: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Per associare i documenti XML a una tabella laterale, è necessario creare un file

DAD per la colonna XML. Il file DAD viene utilizzato per memorizzare il

documento XML in DB2. Esso associa inoltre il contenuto degli elementi e degli

attributi XML alle tabelle laterali del database DB2 utilizzate per l’indicizzazione, il

che migliora le prestazioni di ricerca.

Dopo aver identificato gli elementi e gli attributi in cui eseguire la ricerca, è

necessario determinare il modo in cui questi devono essere organizzati nelle tabelle

laterali, il numero di tabelle da utilizzare e le colonne da inserire nelle tabelle.

Organizzare le tabelle laterali in modo da inserire informazioni simili nella stessa

tabella. Il numero di tabelle laterali è determinato anche dalla presenza ripetuta

degli elementi nel documento. Ad esempio, nel documento, l’elemento part può

essere ripetuto più volte e pertanto gli elementi price e date possono essere ripetuti

più volte. Gli elementi che si ripetono devono trovarsi nelle proprie tabelle laterali.

È inoltre necessario determinare i tipi di base del database DB2 che devono essere

utilizzati dagli elementi o dagli attributi, il che è determinato dal formato della

data.

v Se i dati sono testo, utilizzare VARCHAR.

v Se i dati sono valori interi, utilizzare INTEGER.

v Se i dati sono una data e si desidera eseguire ricerche limitate, utilizzareDATE.

In questo supporto didattico, gli elementi e gli attributi sono associati a

ORDER_SIDE_TAB, PART_SIDE_TAB o a SHIP_SIDE_TAB. Le tabelle riportate di

seguito mostrano a quale tabella è associato ogni elemento o attributo.

ORDER_SIDE_TAB

Nome colonna Tipo di dati Percorso posizione Ricorrenza

multipla?

ORDER_KEY INTEGER /Order/@Key No

CUSTOMER VARCHAR(16) /Order/Customer/Name No

PART_SIDE_TAB

Nome colonna Tipo di dati Percorso posizione Ricorrenza

multipla?

PRICE DECIMAL(10,2) /Order/Part/ExtendedPrice Sì

SHIP_SIDE_TAB

Nome colonna Tipo di dati Percorso posizione Ricorrenza

multipla?

DATE DATE /Order/Part/Shipment/ShipDate Sì

Creazione del database SALES_DB:

In questa attività, viene creato un database SALES_DB e questo viene abilitato per

XML.

Per creare il database:

1. Passare alla directory install_dxx/samples/extenders/db2xml/cmd, dove

install_dxx è la directory in cui sono stati installati i file di XML Extender. I

10 XML Extender - Amministrazione e programmazione

Page 21: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

file di esempio contengono i riferimenti ai file che utilizzano percorsi assoluti.

Controllare i file di esempio e modificare questi valori con i percorsi delle

proprie directory.

2. Su piattaforme Windows®, aprire una finestra dei comandi DB2 immettendo il

seguente testo:

DB2CMD

3. Eseguire il comando getstart_db:

getstart_db.cmd

Abilitazione del database:

Per memorizzare le informazioni XML nel database, è necessario abilitarlo per

XML Extender. Quando si abilita un database per XML, XML Extender:

v Crea UDT (user-defined types), UDF (user-defined functions) e procedure

memorizzate

v Crea e inserisce i dati nelle tabelle di controllo con i metadati necessari richiesti

da XML Extender

v Crea lo schema DB2XML e assegna i privilegi necessari

Per abilitare il database per XML:

Emettere il seguente script:

getstart_prep.cmd

Questo script collega il database alle procedure memorizzate di XML Extender.

Inoltre esegue l’opzione del comando dxxadm che abilita il database:

dxxadm enable_db SALES_DB

Abilitazione della colonna XML e memorizzazione del documento:

In questa lezione, viene abilitata una colonna per XML Extender e viene

memorizzato un documento XML nella colonna. Per queste attività, sarà

necessario:

1. Memorizzare la DTD nel repository di DTD.

2. Creare un file DAD per la colonna XML.

3. Creare la tabella SALES_TAB.

4. Aggiungere la colonna di tipo XML.

5. Abilitare la colonna XML.

6. Visualizzare la colonna e le tabelle laterali.

7. Indicizzare le tabelle laterali per la ricerca strutturale.

8. Memorizzare il documento XML.

9. Interrogare il documento XML.

Memorizzazione della DTD nel repository DTD:

È possibile utilizzare una DTD per convalidare i dati XML in una colonna XML.

XML Extender crea una tabella nel database abilitato per XML, detta DTD_REF. La

tabella è nota come repository DTD ed è disponibile per memorizzare le DTD.

Quando si convalidano i documenti XML, è necessario memorizzare la DTD in

questo repository. La DTD per questa lezione si trova in

install_dxx/samples/extenders/db2xml/dtd/getstart.dtd

Capitolo 1. Introduzione 11

Page 22: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

dove install_dxx è la directory in cui è stato installato DB2 XML Extender.

Inserire la DTD nel repository DTD utilizzando uno dei seguenti metodi:

v Immettere il seguente comando SQL INSERT, tutto sulla stessa riga:

DB2 CONNECT TO SALES_DB

INSERT into DB2XML.DTD_REF values

(’install_dxx/samples/extenders/db2xml/dtd/getstart.dtd,

DB2XML.XMLClobFromFile

(’install_dxx/samples/extenders/db2xml/dtd/getstart.dtd),

0, ’user1’, ’user1’, ’user1’)

v Eseguire il seguente file di comandi per inserire la DTD:

getstart_insertDTD.cmd

Creazione di un file DAD per la colonna XML:

In questa sezione viene descritto come creare un file DAD per la colonna XML. Nel

file DAD, viene specificato che il metodo di accesso e memorizzazione che si

utilizza è una colonna XML. Nel file vengono definite le tabelle laterali e le

colonne per l’indicizzazione.

Nelle seguenti operazioni, gli elementi nel DAD sono detti tag e gli elementi della

struttura di documenti XML sono detti elementi. Per creare un file DAD da

utilizzare con la colonna XML:

1. Aprire un editor di testo e denominare il file getstart_xcolumn.dad

2. Creare l’intestazione del file DAD con le dichiarazioni XML e DOCTYPE.

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "/install_dxx/samples/DB2XML/dtd/dad.dtd ">

Il file DAD è un documento XML. È necessario includere le dichiarazioni XML.

Le tag XML sono sensibili al maiuscolo/minuscolo.

3. Inserire le tag di inizio e di fine (<DAD> e </DAD>) per il documento. Tutte le

altre tag si trovano all’interno di queste tag.

<DAD>

.

.

.

</DAD>

4. Inserire le tag di inizio e di fine (<DTDID> e </DTDID>) con un ID DTD per

specificare un DTD se il documento verrà convalidato:

<dtdid>install_dxx/samples/extenders/db2xml/dtd/getstart.dtd</dtdid>

Verificare che questa stringa corrisponda al valore utilizzato come valroe del

primo parametro quando si inserisce la DTD nella tabella del repository DTD.

Ad esempio, il percorso che si utilizza per DTDID potrebbe essere differente

dalla stringa inserita nella tabella di riferimenti a DTD se si utilizza un’unità di

sistema differente.

5. Inserire le tag di inizio e di fine (<validation> e </validation>) e una parola

chiave YES o NO per indicare se si desidera che XML Extender convalidi la

struttura di documenti XML utilizzando la DTD inserita nella tabella di

riferimenti a DTD. Ad esempio:

<validation>YES</validation>

Il valore di <validation> non è sensibile al maiuscolo/minuscolo.

6. Inserire le tag di inizio e di fine (<Xcolumn> e </Xcolumn>) per specificare che

il metodo di memorizzazione è la colonna XML.

12 XML Extender - Amministrazione e programmazione

Page 23: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

7. Creare le tabelle laterali. Per ogni tabella laterale che si desidera creare:

a. Inserire le tag di inizio e di fine (<table> e </table>) per ogni tabella che

deve essere generata e specificare il nome della tabella laterale tra doppie

virgolette utilizzando l’attributo ″name=″ riportato di seguito:

<Xcolumn>

<table name="order_side_tab">

</table>

<table name="part_side_tab">

</table>

<table name="ship_side_tab">

</table>

</Xcolumn>

b. All’interno delle tag table, inserire una tag <column> per ogni colonna che si

desidera sia contenuta nella tabella laterale. Ogni colonna ha quattro

attributi: name, type, path e multi_occurrence:

name Specifica il nome della colonna da creare nella tabella laterale.

type Indica il tipo di dati nella tabella laterale per ogni elemento o

attributo indicizzato.

path Specifica il percorso di posizione nel documento XML per ogni

elemento o attributo da indicizzare.

multi_occurrence

Indica se l’elemento o l’attributo a cui fa riferimento l’attributo path

può essere presente più di una volta nel documento XML. I valori

possibili per multi_occurrence sono YES o NO. Se il valore è NO,

allora è possibile inserire più di una tag column nella tabella

laterale. Se invece il valore è YES, è possibile inserire soltanto una

tag column.<Xcolumn>

<table name="order_side_tab">

<column name="order_key"

type="integer"

path="/Order/@Key"

multi_occurrence="NO"/>

<column name="customer"

type="varchar(50)"

path="/Order/Customer/Name"

multi_occurrence="NO"/>

</table>

<table name="part_side_tab">

<column name="price"

type="decimal(10,2)"

path="/Order/Part/ExtendedPrice"

multi_occurrence="YES"/>

</table>

<table name="ship_side_tab">

<column name="date"

type="DATE"

path="/Order/Part/Shipment/ShipDate"

multi_occurrence="YES"/>

</table>

</Xcolumn>

8. Verificare di aver inserito le tag di fine necessarie:

v Una tag </Xcolumn> di chiusura dopo l’ultima tag </table>

v Una tag </DAD> di chiusura dopo la tag </Xcolumn>9. Salvare il file con il seguente nome:

getstart_xcolumn.dad

Capitolo 1. Introduzione 13

Page 24: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

È possibile confrontare il file appena creato con il file di esempio,

install_dxx/samples/extenders/db2xml/dad/getstart_xcolumn.dad . Questo file è

la copia operativa del file DAD richiesto per abilitare la colonna XML e creare le

tabelle laterali. I file di esempio contengono i riferimenti ai file che utilizzano

percorsi assoluti. Controllare i file di esempio e modificare questi valori con i

percorsi delle proprie directory.

Creazione della tabella SALES_TAB:

In questa sezione viene creata la tabella SALES_TAB. Inizialmente, questa ha due

colonne con le informazioni sulla vendita per l’ordine. La tabella SALES_TAB è

descritta in Tabella 1 a pagina 8.

Per creare la tabella:

Immettere la seguente istruzione CREATE TABLE utilizzando uno dei seguenti

metodi:

v Immettere i seguenti comandi DB2:

DB2 CONNECT TO SALES_DB

DB2 CREATE TABLE SALES_TAB(INVOICE_NUM CHAR(6)

NOT NULL PRIMARY KEY,

SALES_PERSON VARCHAR(20))

v Eseguire il seguente file di comandi per creare la tabella:

getstart_createTabCol.cmd

Aggiunta della colonna di tipo XML:

Aggiungere una nuova colonna alla tabella SALES_TAB. Questa colonna conterrà il

documento XML inalterato generato precedentemente e deve essere di una UDT

XML. XML Extender fornisce più tipi di dati. In questa lezione, il documento verrà

memorizzato come XMLVARCHAR.

Per aggiungere la colonna di tipo XML:

Eseguire l’istruzione SQL ALTER TABLE utilizzando uno dei seguenti metodi:

v Immettere la seguente istruzione SQL:

DB2 ALTER TABLE SALES_TAB ADD ORDER DB2XML.XMLVARCHAR

v Eseguire il seguente file di comandi per modificare la tabella:

getstart_alterTabCol.cmd

Abilitazione della colonna XML:

Dopo aver creato la colona di tipo XML, è necessario abilitarla per XML Extender.

Quando si abilita la colonna, XML Extender legge il file DAD e crea le tabelle

laterali. Prima di abilitare la colonna, è necessario:

v Determinare se si desidera creare una vista predefinita della colonna XML che

contiene il documento XML unito alle colonne delle tabelle laterali. È possibile

specificare la vista predefinita quando si abilita la colonna XML. In questa

lezione, verrà specificata una vista mediante il parametro -v.

v Determinare se si desidera specificare una chiave primaria come ID ROOT, il

nome della colonna della chiave primaria nella tabella dell’applicazione e un

identificativo univoco che associate tutte le tabelle laterali alla tabella

14 XML Extender - Amministrazione e programmazione

Page 25: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

dell’applicazione. Se non si specifica una chiave primaria, XML Extender

aggiunge la colonna DXXROOT_ID alla tabella dell’applicazione e alle tabelle

laterali.

La colonna ROOT_ID viene utilizzata come chiave per unire l’applicazione e le

tabelle laterali, il che consente a XML Extender di aggiornare automaticamente le

tabelle laterali se viene aggiornato il documento XML. In questa lezione, viene

inviata la colonna della chiave primaria (INVOICE_NUM) con il parametro -r.

XML Extender utilizza quindi la colonna specificata come ROOT_ID e la

aggiunge alle tabelle laterali.

v Determinare se si desidera specificare un tablespace o utilizzare il tablespace

predefinito. In questa lezione, verrà utilizzato il tablespace predefinito.

Per abilitare la colonna per XML:

Eseguire il comando dxxadm enable_column utilizzando uno dei seguenti metodi:

Riga comandi:

v Immettere il seguente comando:

dxxadm enable_column SALES_DB SALES_TAB ORDER getstart_xcolumn.dad

-v SALES_ORDER_VIEW -r INVOICE_NUM

v Eseguire il seguente file di comandi per abilitare la colonna:

getstart_enableCol.cmd

XML Extender crea le tabelle laterali con la colonna INVOICE_NUM e crea la vista

predefinita.

Importante: non modificare in alcun modo le tabelle laterali. Gli aggiornamenti alle

tabelle laterali devono essere effettuati soltanto attraverso gli aggiornamenti al

documento XML stesso. XML Extender aggiornerà automaticamente le tabelle

laterali quando si aggiorna un documento XML nella colonna XML.

Visualizzazione della colonna e delle tabelle laterali:

Quando è stata abilitata la colonna XML, è stata creata una vista della colonna e

delle tabelle laterali XML. È possibile utilizzare questa vista quando si utilizza la

colonna XML.

Per visualizzare la colonna XML e le colonne delle tabelle laterali:

Immettere la seguente istruzione SQL SELECT dalla riga comandi:

SELECT * FROM SALES_ORDER_VIEW

La vista mostra le colonne nelle tabelle laterali, come specificato nel file

getstart_xcolumn.dad.

Indicizzazione delle tabelle laterali per la ricerca strutturale:

La creazione di indici sulle tabelle laterali consente di eseguire rapide ricerche

strutturali all’interno del documento XML. In questa sezione, vengono creati gli

indici sulle colonne delle chiavi nelle tabelle laterali che sono state create quando è

stata abilitata la colonna XML, ORDER. Il reparto dei servizi ha specificato le

colonne che i dipendenti interrogano più spesso. Tabella 3 a pagina 16 descrive tali

colonne che verranno indicizzate.

Capitolo 1. Introduzione 15

Page 26: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 3. Colonne delle tabelle laterali da indicizzare

Colonna Tabella laterale

ORDER_KEY ORDER_SIDE_TAB

CUSTOMER ORDER_SIDE_TAB

PRICE PART_SIDE_TAB

DATE SHIP_SIDE_TAB

Per indicizzare le tabelle laterali:

Immettere i seguenti comandi CREATE INDEX SQL utilizzando uno dei seguenti

metodi:

Riga comandi:

v Immettere i seguenti comandi:

DB2 CREATE INDEX KEY_IDX

ON ORDER_SIDE_TAB(ORDER_KEY)

DB2 CREATE INDEX CUSTOMER_IDX

ON ORDER_SIDE_TAB(CUSTOMER)

DB2 CREATE INDEX PRICE_IDX

ON PART_SIDE_TAB(PRICE)

DB2 CREATE INDEX DATE_IDX

ON SHIP_SIDE_TAB(DATE)

v Eseguire il seguente file di comandi per creare gli indici:

getstart_createIndex.cmd

Memorizzazione del documento XML:

Dopo aver abilitato una colonna che contiene un documento XML e dopo aver

indicizzato le tabelle laterali, è possibile memorizzare il documento utilizzando le

funzioni fornite da XML Extender. Quando si memorizzano i dati in una colonna

XML, vengono utilizzate le funzioni di casting predefinite o le UDF di XML

Extender. Poiché sta per essere memorizzato un oggetto del tipo di base

VARCHAR in una colonna dell’UDT XML XMLVARCHAR, verrà utilizzata la

funzione di casting predefinita.

Per memorizzare il documento XML:

1. Aprire il documento XML install_dxx/samples/extenders/db2xml/xml/getstart.xml. Verificare che il percorso del file in DOCTYPE corrisponda all’ID

DTD specificato nella DAD quando è stata inserita la DTD nel repository. È

possibile verificare questa corrispondenza interrogando la tabella

DB2XML.DTD_REF e controllando l’elemento DTDID nel file DAD. Se si

utilizza una unità e una struttura di directory differente da quella predefinita, è

necessario modificare il percorso nella dichiarazione DOCTYPE in modo che

corrisponda alla struttura della directory.

2. Eseguire il comando SQL INSERT utilizzando uno dei seguenti metodi:

v Immettere il seguente comando SQL INSERT:

DB2 INSERT INTO SALES_TAB (INVOICE_NUM, SALES_PERSON, ORDER) VALUES

(’123456’, ’Sriram Srinivasan’, DB2XML.XMLVarcharFromFile

(’install_dxx/samples/extenders/db2xml/

/xml/getstart.xml’))

16 XML Extender - Amministrazione e programmazione

Page 27: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v Eseguire il seguente file di comandi per memorizzare il documento:

getstart_insertXML.cmd

Verificare che le tabelle siano state aggiornate. Eseguire le seguenti istruzioni

SELECT per le tabelle dalla riga comandi.

SELECT * FROM SALES_TAB

SELECT * FROM PART_SIDE_TAB

SELECT * FROM ORDER_SIDE_TAB

SELECT * FROM SHIP_SIDE_TAB

Interrogazione del documento XML:

È possibile ricercare il documento XML con una interrogazione diretta rispetto alle

tabelle laterali. In questo passo, verranno ricercati tutti gli ordini che hanno un

prezzo superiore a 2500.00.

Per interrogare le tabelle laterali:

Eseguire l’istruzione SQL SELECT utilizzando uno dei seguenti metodi:

v Immettere la seguente istruzione SQL SELECT:

DB2 "SELECT DISTINCT SALES_PERSON FROM SALES_TAB S,

PART_SIDE_TAB P WHERE PRICE > 2500.00

AND S.INVOICE_NUM=P.INVOICE_NUM"

v Eseguire il seguente file di comandi per eseguire una ricerca nel documento:

getstart_queryCol.cmd

La serie di risultati mostra i nomi delle persone addette alle vendite che hanno

venduto un elemento con un prezzo maggiore di 2500.00. Ad esempio:

SALES_PERSON

--------------------

Sriram Srinivasan

A questo punto è stato completato il supporto didattico per la memorizzazione di

documenti XML nelle tabelle di database DB2.

Argomenti correlati:

v “Lezioni del supporto didattico di XML Extender” a pagina 6

v “Introduzione a XML Extender” a pagina 3

v “Lezione: Composizione di un documento XML”

Lezione: Composizione di un documento XML

Questa lezione insegna come comporre un documento XML da dati DB2® esistenti.

Lo scenario:

L’attività consiste nell’acquisire informazioni in un database di ordine di acquisto

esistente, SALES_DB e nell’estrarre le informazioni richieste da tale database per

memorizzarle nei documenti XML. Il reparto dei servizi utilizzerà tali documenti

XML nella gestione delle lamentele e delle richieste dei clienti. Il reparto dei servizi

ha richiesto l’inclusione di dati specifici e ha fornito una struttura consigliata per i

documenti XML.

Capitolo 1. Introduzione 17

Page 28: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Utilizzando i dati esistenti, verrà composto un documento XML, getstart.xml, dai

dati nelle tabelle del database SALES_DB.

Per comporre un documento XML, si pianificherà e creerà un file DAD che associa

le colonne delle tabelle correlate a una struttura di documento XML che fornisce

un record dell’ordine di acquisto. Verrà creata una raccolta XML e le tabelle

verranno associate a una struttura XML e a un DTD. Tale DTD viene utilizzato per

definire la struttura del documento XML. È inoltre possibile utilizzarlo per

convalidare il documento XML composto nelle applicazioni.

I dati di database esistenti per il documento XML sono descritti nelle seguenti

tabelle. I nomi colonna con un asterisco sono colonne richieste dal reparto dei

servizi nella struttura del documento XML.

ORDER_TAB

Nome colonna Tipo di dati

ORDER_KEY * INTEGER

CUSTOMER VARCHAR(16)

CUSTOMER_NAME * VARCHAR(16)

CUSTOMER_EMAIL * VARCHAR(16)

PART_TAB

Nome colonna Tipo di dati

PART_KEY * INTEGER

COLOR * CHAR(6)

QUANTITY * INTEGER

PRICE * DECIMAL(10,2)

TAX * REAL

ORDER_KEY INTEGER

SHIP_TAB

Nome colonna Tipo di dati

DATE * DATE

MODE * CHAR(6)

COMMENT VARCHAR(128)

PART_KEY INTEGER

Pianificazione:

Prima di utilizzare XML Extender per comporre i documenti, è necessario

determinare la struttura del documento XML e in che modo essa corrisponde alla

struttura dei dati del database. Questa sezione fornisce una panoramica della

struttura del documento XML richiesta dal reparto dei servizi e del DTD utilizzato

per definire la struttura del documento XML. Questa sezione descrive in che modo

i dati delle colonne database sono associati ai dati nel documento XML composto.

Come determinare la struttura del documento:

18 XML Extender - Amministrazione e programmazione

Page 29: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

La struttura del documento XML è stabilita dai requisiti delle persone che

utilizzeranno il documento XML risultante. In questo esempio, tali persone si

trovano nel reparto dei servizi. Questo reparto necessita di informazioni

sull’ordine. Ad esempio, numero d’ordine, cliente, parte e informazioni di

spedizione. È possibile ricavare tutti i dati dalle tabelle order_tab, part_tab e

ship_tab.

Dopo avere progettato la struttura del documento, viene creato un DTD per

descrivere la struttura del documento XML. Questa lezione fornisce un DTD.

Utilizzando le regole del DTD e la struttura gerarchica del documento XML, è

possibile creare una mappa gerarchica dei dati, come mostrato in Figura 1.

Associazione del documento XML alla relazione database:

Dopo avere progettato la struttura e creato il DTD, è necessario mostrare in che

modo la struttura del documento viene associata alle tabelle del database DB2 che

verranno utilizzate per inserire gli elementi e gli attributi. È possibile associare la

Figura 1. La struttura gerarchica del DTD e del documento XML

Capitolo 1. Introduzione 19

Page 30: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

struttura gerarchica a colonne specifiche nelle tabelle relazionali, come mostrato in

Figura 2.

Questa figura utilizza i nodi per mostrare elementi, attributi e testo all’interno della

struttura del documento XML. Tali nodi vengono utilizzati nel file DAD e verranno

spiegati in maggiore dettaglio in seguito.

Utilizzare questa descrizione di relazione per creare un file DAD che definisca la

relazione tra i dati relazionali e la struttura del documento XML.

Per creare il file DAD di raccolta XML, è necessario comprendere in che modo il

documento XML corrisponde alla struttura database, come spiegato in Figura 2, in

modo da poter descrivere da quali tabelle e colonne la struttura del documento

XML deriva i dati per elementi e attributi. Tali informazioni verranno utilizzate per

creare il file DAD per la raccolta XML.

Script ed esempi:

Questa lezione fornisce una serie di script da utilizzare per configurare il proprio

ambiente. Tali script si trovano nella directory dxx_install/samples/extenders/db2xml/xml (dove dxx_install è la directory in cui sono stati installati i file XML

Extender)

Figura 2. Documento XML associato a colonne di tabelle relazionali

20 XML Extender - Amministrazione e programmazione

Page 31: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Gli script sono:

getstart_db.cmd

Crea il database e inserisce i dati in quattro tabelle.

getstart_prep.cmd

Collega il database alle procedure memorizzate di XML Extender.

getstart_stp.cmd

Esegue la procedura memorizzata per comporre la raccolta XML.

getstart_exportXML.cmd

Esporta il documento XML dal database per utilizzarlo in un’applicazione.

getstart_clean.cmd

Cancella l’ambiente del supporto didattico.

Configurazione dell’ambiente di lezione:

In questa sezione, si preparerà il database da utilizzare con XML Extender.

Verranno effettuate le seguenti operazioni:

1. Creare il database.

2. Abilitare il database.

Creazione del database:

In questa sezione, viene utilizzato un comando per configurare il database. Tale

comando crea il database SALES_DB, si collega ad esso, crea le tabelle in cui

inserire i dati i inserisce i dati.

Importante: se è stata completata la lezione della colonna XML e non è stato

cancellato l’ambiente, è possibile ignorare questo passaggio. Verificare se il

database SALES_DB è presente.

Per creare il database:

1. Passare alla directory dxx_install/samples/extenders/db2xml/xml/cmd, dove

dxx_install è la directory in cui sono stati installati i file XML Extender. I file di

esempio contengono riferimenti ai file che utilizzano nomi percorso assoluti.

Controllare i file di esempio e modificare questi valori con i percorsi delle

proprie directory.

2. In Windows, immettere il seguente comando in un prompt di comandi per

avviare il processore della riga comandi DB2:

DB2CMD

3. Immettere il seguente comando:

getstart_db.cmd

Abilitazione del database:

Per generare un documento XML dai dati relazionali nel database, è necessario

abilitare il database per XML Extender. Quando si abilita un database per XML,

XML Extender:

v Crea UDT (user-defined type), UDF (user-defined function) e procedure

memorizzate

v Crea e inserisce i dati nelle tabelle di controllo con i metadati necessari richiesti

da XML Extender.

v Crea lo schema DB2XML e assegna i privilegi necessari.

Capitolo 1. Introduzione 21

Page 32: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Importante: se è stata completata la lezione della colonna XML e non è stato

cancellato l’ambiente, è possibile ignorare questo passaggio.

Emettere il seguente script per abilitare il database SALES_DB:

getstart_prep.cmd

Questo script collega il database alle procedure memorizzate di XML Extender.

Inoltre esegue l’opzione del comando dxxadm che abilita il database SALES_DB.

Creazione del file DAD per la raccolta XML:

Dal momento che i dati esistono in più tabelle, verrà creata una raccolta XML, che

associa le tabelle al documento XML. La raccolta viene definita creando un file

DAD.

In questa sezione, viene creato lo schema di associazione nel file DAD che specifica

la relazione tra le tabelle e la struttura del documento XML.

Nelle seguenti operazioni, gli elementi nel DAD sono detti tag e gli elementi della

struttura di documenti XML sono detti elementi. Un esempio di file DAD simile a

quello creato si trova in dxx_install/samples/extenders/db2xml/dad/getstart_xcollection.dad.

Contiene alcune differenze rispetto al file generato nella procedura seguente. Se lo

si utilizza per la lezione, il file potrebbe essere diverso da quello del proprio

ambiente e potrebbero essere necessari degli aggiornamenti al file di esempio.

Per creare il file DAD per la composizione di un documento XML:

1. Dalla directory dxx_install/samples/extenders/db2xml/xml directory, aprire

un editor di testo e creare un file denominato getstart_xcollection.dad.

2. Creare l’intestazione DAD, utilizzando il seguente testo:

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "dxx_install/samples/extenders/db2xml/dtd/dad.dtd">

Change dxx_install nella directory in cui è stato installato DB2 XML

Extender.

3. Inserire le tag <DAD> </DAD>. Tutte le altre tag si trovano all’interno di

queste tag.

4. Specificare le tag <validation> </validation> per indicare se XML Extender

convalida la struttura del documento XML. Il documento XML viene

convalidato rispetto a DTD nella tabella di repository DTD. Questa lezione

non richiede un DTD e il valore è NO.

<validation>NO</validation>

Il valore delle tag <validation> non è sensibile al maiuscolo/minuscolo.

5. Utilizzare le tag <Xcollection></Xcollection> per definire il metodo di

memorizzazione e accesso come raccolta XML. Tali metodi definiscono che i

dati XML vengono memorizzati in una raccolta di tabelle del database DB2.

<Xcollection>

</Xcollection>

6. Dopo la tag <Xcollection>, fornire un’istruzione SQL per specificare le tabelle

e le colonne utilizzate per la raccolta XML. Questo metodo è chiamato

associazione ed è uno dei due modi per associare i dati relazionali alla

struttura del documento XML. Immettere la seguente istruzione:

22 XML Extender - Amministrazione e programmazione

Page 33: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<Xcollection>

<SQL_stmt>

SELECT o.order_key, customer_name, customer_email, p.part_key, color,

quantity, price, tax, ship_id, date, mode from order_tab o, part_tab p,

table (select substr(char(timestamep(generate_unique()),16)

as ship_id, date, mode, part_key from ship_tab) s

WHERE o.order_key = 1 and

p.price > 20000 and

p.order_key = o.order_key and

s.part_key = p.part_key

ORDER BY order_key, part_key, ship_id

</SQL_stmt>

</Xcollection>

Questa istruzione SQL utilizza le seguenti linee guida durante l’utilizzo

dell’associazione SQL. Consultare Figura 2 a pagina 20 per informazioni sulla

struttura del documento.

v Le colonne vengono specificate in un ordine decrescente dalla gerarchia

della struttura del documento XML. Ad esempio, le colonne per gli elementi

ordine e cliente sono le prime, quelle per l’elemento parte sono le seconde e

quelle per la spedizione sono le terze.

v Le colonne per una sezione di ripetizione o non di ripetizione, del modello

che richiede i dati dal database si trovano nello stesso gruppo. Ogni gruppo

dispone di una colonna ID oggetto: ORDER_KEY, PART_KEY e SHIP_ID.

v La colonna ID dell’oggetto è la prima colonna in ciascun gruppo. Ad

esempio, O.ORDER_KEY precede le colonne relative all’attributo chiave e

p.PART_KEY precede le colonne per l’elemento Parte.

v La tabella SHIP_TAB non presenta una colonna condizionale a chiave

singola e perciò, la funzione integrata DB2 generate_unique viene utilizzata

per generare la colonna SHIP_ID.

v Le colonne di ID oggetto vengono quindi elencate in ordine decrescente in

un’istruzione ORDER BY. Le colonne in ORDER BY possono non essere

qualificate da alcuno schema e nome tabella e corrispondono ai nomi

colonna nella clausola SELECT. 7. Aggiungere le seguenti informazioni del prologo da utilizzare nel documento

XML composto. Se si desidera specificare un valore di codifica per

l’internazionalizzazione, aggiungere l’attributo ENCODING e il valore.

<prolog>?xml version="1.0"?</prolog>

Questo testo specifico è richiesto per tutti i file DAD.

8. Aggiungere le tag <doctype></doctype> da utilizzare nel documento XML

che si sta componendo. La tag <doctype> contiene il percorso al DTD

memorizzato nel client.

<doctype>!DOCTYPE Order SYSTEM

"dxx_install/samples/extenders/db2xml/dtd/getstart.dtd"</doctype>

9. Definire l’elemento root del documento XML utilizzando le tag

<root_node></root_node>. In root_node, specificare gli elementi e gli attributi

che compongono il documento XML.

10. Associare la struttura del documento XML alla struttura della tabella

relazionale del database DB2 utilizzando i tre seguenti tipi di nodi:

element_node

Specifica l’elemento nel documento XML. Ogni element_nodes può

avere element_nodes secondari.

attribute_node

Specifica l’attributo di un elemento nel documento XML.

Capitolo 1. Introduzione 23

Page 34: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

text_node

Specifica il contenuto del testo dell’elemento e i dati della colonna in

una tabella relazionale per element_nodes di livello inferiore.Figura 2 a pagina 20 mostra la struttura gerarchica del documento XML e le

colonne della tabella database DB2 e indica i tipi di nodi utilizzati. Le caselle

ombreggiate indicano i nomi delle colonne database DB2 da cui verranno

estratti i dati per comporre il documento XML.

Per aggiungere ogni tipo di nodo, uno alla volta:

a. Definire una tag <element_node> per ogni elemento nel documento XML.

<root_node>

<element_node name="Order">

<element_node name="Customer">

<element_node name="Name">

</element_node>

<element_node name="Email">

</element_node>

</element_node>

<element_node name="Part">

<element_node name="key">

</element_node>

<element_node name="Quantity">

</element_node>

<element_node name="ExtendedPrice">

</element_node>

<element_node name="Tax">

</element_node>

<element_node name="Shipment" multi_occurrence="YES">

<element_node name="ShipDate">

</element_node>

<element_node name="ShipMode">

</element_node>

</element_node> <!-- end Shipment -->

</element_node> <!-- end Part -->

</element_node> <!-- end Order -->

</root_node>

L’elemento secondario <Shipment> ha l’attributo multi_occurrence=YES.

Tale attributo viene utilizzato per elementi senza attributo, ripetuti nel

documento. L’elemento <Part> non utilizza l’attributo con più ricorrenze

perché ha l’attributo del colore che lo rende univoco.

b. Definire una tag <attribute_node> per ogni attributo nel documento XML.

Tali attributi vengono nidificati nell’element_node appropriato. Gli

attribute_node sono evidenziati in grassetto:

<root_node>

<element_node name="Order">

<attribute_node name="key">

</attribute_node>

<element_node name="Customer">

<element_node name="Name">

</element_node>

<element_node names"Email">

</element_node>

</element_node>

<element_node name="Part">

<attribute_node name="color">

</attribute_node>

<element_node name="key">

</element_node>

<element_node name="Quantity">

</element_node>

...

24 XML Extender - Amministrazione e programmazione

Page 35: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

</element_node> <!-- end Part -->

</element_node> <!-- end Order -->

</root_node>

c. Per ogni nodo elemento di livello inferiore, specificare le tag <text_node>

che indicano che l’elemento XML contiene dati carattere da estrarre dal

database DB2 quando il documento viene composto.

<root_node>

<element_node name="Order">

<attribute_node name="key">

</attribute_node>

<element_node name="Customer">

<element_node name="Name">

<text_node>

</text_node>

</element_node>

<element_node name="Email">

<text_node>

</text_node>

</element_node>

</element_node>

<element_node name="Part">

<attribute_node name="color">

</attribute_node>

<element_node name="key">

<text_node>

</text_node>

</element_node>

<element_node name="Quantity">

<text_node>

</text_node>

</element_node>

<element_node name="ExtendedPrice">

<text_node>

</text_node>

</element_node>

<element_node name="Tax">

<text_node>

</text_node>

</element_node>

<element_node name="Shipment" multi_occurrence="YES">

<element_node name="ShipDate">

<text_node>

</text_node>

</element_node>

<element_node name="ShipMode">

<text_node>

</text_node>

</element_node>

</element_node> <!-- end Shipment -->

</element_node> <!-- end Part -->

</element_node> <!-- end Order -->

</root_node>

d. Per ogni nodo elemento di livello inferiore, definire una tag <column>. Tali

tag specificano da quale colonna estrarre i dati durante la composizione

del documento XML e si trovano, generalmente, nelle tag <attribute_node>

o <text_node>. Le colonne definite nella tag <column> devono essere

presenti nella clausola <SQL_stmt> SELECT.

<root_node>

<element_node name="Order">

<attribute_node name="key">

<column name="order_key"/>

</attribute_node>

<element_node name="Customer">

Capitolo 1. Introduzione 25

Page 36: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<element_node name="Name">

<text_node>

<column name="customer_name"/>

</text_node>

</element_node>

<element_node name="Email">

<text_node>

<column name="customer_email"/>

</text_node>

</element_node>

</element_node>

<element_node name="Part">

<attribute_node name="color">

<column name="color"/>

</attribute_node>

<element_node name="key">

<text_node>

<column name="part_key"/>

</text_node>

<element_node name="Quantity">

<text_node>

<column name="quantity"/>

</text_node>

</element_node>

<element_node name="ExtendedPrice">

<text_node>

<column name="price"/>

</text_node>

</element_node>

<element_node name="Tax">

<text_node>

<column name="tax"/>

</text_node>

</element_node>

<element_node name="Shipment" multi_occurrence="YES">

<element_node name="ShipDate">

<text_node>

<column name="date"/>

</text_node>

</element_node>

<element_node name="ShipMode">

<text_node>

<column name="mode"/>

</text_node>

</element_node>

</element_node> <!-- end Shipment -->

</element_node> <!-- end Part -->

</element_node> <!-- end Order -->

</root_node>

11. Verificare di aver inserito le tag di fine necessarie:

v Una tag di chiusura </root_node> dopo l’ultima tag </element_node>.

v Una tag di chiusura </Xcollection> dopo la tag </root_node>.

v Una tag di chiusura </DAD> dopo la tag </Xcollection_node>.12. Salvare il file comegetstart_xcollection.dad.

È possibile confrontare il file creato con il file di esempio, dxx_install/samples/extenders/db2xml/dad/getstart_xcollection.dad . Questo file è la copia operativa

del file DAD richiesto per comporre il documento. Il file di esempio contiene i

percorsi e i nomi percorso dei file che potrebbe essere necessario modificare per

adattarli al proprio ambiente e consentirne la corretta esecuzione.

Nella propria applicazione, se si utilizzerà spesso una raccolta XML per comporre i

documenti, è possibile definire un nome raccolta abilitando la raccolta.

26 XML Extender - Amministrazione e programmazione

Page 37: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

L’abilitazione della raccolta la registra nella tabella XML_USAGE e consente un

miglioramento delle prestazioni quando si specifica il nome raccolta (anziché il

nome del file DAD) durante l’esecuzione delle procedure memorizzate. In tali

lezioni, la raccolta non viene abilitata.

Composizione del documento XML:

In questa procedura, viene utilizzata la procedura memorizzata dxxGenXML() per

comporre il documento XML specificato dal file DAD. Questa procedura

memorizzata restituisce il documento come UDT XMLVARCHAR.

Per comporre il documento XML:

1. immettere il seguente comando:

getstart_stp.cmd

La procedura memorizzata compone il documento XML e lo memorizza nella

tabella RESULT_TAB.

Se si sta eseguendo XML Extender in un ambiente DB2 Enterprise Server

Edition con partizioni, verificare di avere creato una tabella dei risultati con la

chiave di partizionamento qualificata o in un tablespace all’interno di un

gruppo di nodi con un singolo nodo.

Per consultare gli esempi di procedure memorizzate che è possibile utilizzare in

questo passaggio, vedere i seguenti file:

v dxx_install/samples/extenders/db2xml/c/tests2x.sqc mostra come chiamare

la procedura memorizzata utilizzando SQL incorporato e genera il file

eseguibile tests2x, utilizzato da getstart_stp.cmd.

v dxx_install/samples/extenders/db2xml/cli/sql2xml.c mostra come chiamare

la procedura memorizzata utilizzando CLI.2. Esportare il documento XML dalla tabella a un file utilizzando uno dei seguenti

metodi per chiamare la funzione di richiamo XML Extender, Content():

v Immettere i seguenti comandi:

DB2 CONNECT TO SALES_DB

DB2 SELECT DB2XML.Content(DB2XML.xmlVarchar(doc),

’dxx_install/samples/extenders/db2xml/cmd/xml/getstart.xml

’) FROM RESULT_TAB

v Eseguire il seguente file di comandi per esportare il file:

getstart_exportXML.cmd

Suggerimento: questa procedura insegna come generare uno o più documenti

XML composti utilizzando la funzione della serie di risultati della procedura

memorizzata del database DB2. L’utilizzo di una serie di risultati consente di

utilizzare più righe per generare più documenti. Quando si genera ogni

documento, è possibile esportarlo in un file. Questo metodo è il modo più semplice

per dimostrare l’utilizzo delle serie di risultati. Per modi più efficaci di utilizzo

dati, consultare gli esempi CLI nel dxx_install/samples/extenders/db2xml/cli.

Conversione di un documento XML in un file HTML:

Per mostrare i dati dal documento XML in un browser, è necessario convertire il

documento XML in un file HTML utilizzando un foglio di stile e la funzione

XSLTransformToFile.

Utilizzare la seguente procedura per eseguire la conversione in un file HTML:

Capitolo 1. Introduzione 27

Page 38: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

1. Generare un foglio di stile utilizzando un editor di testo e denominarlo

getstart.xsl:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<html>

<head/>

<body>

...

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Per un esempio di tale file completato, consultare la seguente directory:

dxx_install/samples/extenders/db2xml/xslt/getstart.xsl

2. Per ogni elemento, creare una tag con il seguente formato:

<xsl:for-each select="xxxxxx">

Tale tag verrà utilizzata per le istruzioni di conversione. Creare una tag per

ogni elemento della gerarchia del documento XML. Ad esempio:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<html>

<head/>

<body>

<xsl:for-each select="Order">

<xsl:for-each select="Customer">

<xsl:for-each select="Name | Email">

</xsl:for-each>

</xsl:for-each>

<xsl:for-each select="Part">

<xsl:for-each select="key | Quantity | ExtendedPrice | Tax">

</xsl:for-each>

<xsl:for-each select="Shipment">

<xsl:for-each select="ShipDate | ShipMode">

</xsl:for-each>

</xsl:for-each>

</xsl:for-each>

</xsl:for-each>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

3. Per formattare il file HTML, utilizzare un elenco che mostri la gerarchia di

elementi XML per rendere i dati più leggibili. Creare ulteriori elementi di testo

per descrivere i dati. Ad esempio, è possibile che il file del foglio di stile sia

simile al seguente:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

28 XML Extender - Amministrazione e programmazione

Page 39: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<xsl:template match="/">

<html>

<head/>

<body>

<ol style="list-style:decimal outside">

<xsl:for-each select="Order">

<li> Orderkey : <xsl:value-of-select="@Key"/ <br/>

<xsl:for-each select="Customer">

<b>Customer</b><br/>

<xsl:for-each select="Name | Email">

<xsl:value-of select="name()"/>

<xsl:text> : </xsl:text>

<xsl:value-of select="."/>

<xsl:text>, </xsl:text>

</xsl:for-each>

</xsl:for-each>

<br/><br/>

<ol type="A">

<xsl:for-each select="Part">

<li><b>Parts</b><br/>

Color : <xsl:value-of select="@color"/>

<xsl:text>, </xsl:text>

<xsl:for-each select="key | Quantity | ExtendedPrice | Tax">

<xsl:value-of select="name()"/>

<xsl:text> : </xsl:text>

<xsl:value-of select="."/>

<xsl:text>, </xsl:text>

</xsl:for-each>

<br/><br/>

<ol type="a">

<xsl:for-each select="Shipment">

<li><b>Shipment</b><br/>

<xsl:for-each select="ShipDate | ShipMode">

<xsl:value-of select="name()"/>

<xsl:text> : </xsl:text>

<xsl:value-of select="."/>

<xsl:text>, </xsl:text>

</xsl:for-each>

</li>

</xsl:for-each>

</ol><br/>

</li>

</xsl:for-each>

</ol>

</li>

</xsl:for-each>

</ol>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

4. Utilizzare Xpath per modificare le tag <xsl:value-of select=″xxx″> con i dati del

documento XML.

Le tag di elementi sono <xsl:value-of select″.″>, dove il punto (″.″) viene

utilizzato per acquisire i dati dai normali elementi.

Le tag di attributo sono <xsl:value-of select=″@attributname″> , dove la e

commerciale (@) aggiunta dal nome attributo estrarrà il valore dell’attributo. È

possibile utilizzare <xsl:value-of select=″name()″> per acquisire il nome della

tag XML.

Capitolo 1. Introduzione 29

Page 40: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<html>

<head/>

<body>

<ol style="list-style:decimal outside">

<xsl:for-each select="Order">

<li> Orderkey : <xsl:value-of-select="@Key"/ <br/>

<xsl:for-each select="Customer">

<b>Customer</b><br/>

<xsl:for-each select="Name | Email">

<xsl:value-of select="name()"/>

<xsl:text> : </xsl:text>

<xsl:value-of select="."/>

<xsl:text>, </xsl:text>

</xsl:for-each>

</xsl:for-each>

<br/><br/>

<ol type="A">

<xsl:for-each select="Part">

<li><b>Parts</b><br/>

Color : <xsl:value-of select="@color"/>

<xsl:text>, </xsl:text>

<xsl:for-each select="key | Quantity | ExtendedPrice | Tax">

<xsl:value-of select="name()"/>

<xsl:text> : </xsl:text>

<xsl:value-of select="."/>

<xsl:text>, </xsl:text>

</xsl:for-each>

<br/><br/>

<ol type="a">

<xsl:for-each select="Shipment">

<li><b>Shipment</b><br/>

<xsl:for-each select="ShipDate | ShipMode">

<xsl:value-of select="name()"/>

<xsl:text> : </xsl:text>

<xsl:value-of select="."/>

<xsl:text>, </xsl:text>

</xsl:for-each>

</li>

</xsl:for-each>

</ol><br/>

</li>

</xsl:for-each>

</ol>

</li>

</xsl:for-each>

</ol>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

5. Salvare il foglio di stile.

6. Creare il file HTML in uno dei seguenti modi:

v Utilizzare la funzione XSLTransformToFile:

30 XML Extender - Amministrazione e programmazione

Page 41: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

SELECT DB2XML.XSLTransformToFile( CAST(doc AS CLOB(4k)),

’dxx_install\samples\xslt\getstart.xsl’,

’dxx_install\samples\html\getstart.html’)

FROM RESULT_TAB

v Utilizzare il seguente comando:

getstart_xslt.cmd

Il file di output può essere scritto solo su un file system accessibile al server di

database DB2.

Cleanup dell’ambiente del supporto didattico:

Se si desidera eseguire il cleanup dell’ambiente di lezione, è possibile effettuare

uno dei seguenti script o immettere i comandi dalla riga comandi per:

v Disabilitare la colonna XML, ORDER.

v Eliminare le tabelle create nelle lezioni.

v Eliminare il DTD dalla tabella di repository DTD.

Il database SALES_DB non è stato disabilitato o eliminato; è ancora disponibile per

l’uso con XML Extender. È possibile che si ricevano dei messaggi di errore se non

sono state completate entrambe le lezioni in questa sezione. È possibile ignorare

tali errori.

Per eseguire il cleanup dell’ambiente del supporto didattico:

Eseguire il file del comando di cleanup utilizzando uno dei seguenti metodi:

v immettere il seguente comando:

getstart_clean.cmd

v Per disabilitare il database, è possibile immettere il seguente comando di XML

Extender dalla riga comandi:

dxxadm disable_db SALES_DB

Questo comando elimina le tabelle di controllo gestione, DTD_REF e

XML_USAGE e rimuove le funzioni e gli UDF forniti da XML Extender.

v Per eliminare il database, è possibile immettere il seguente comando dalla riga

comandi:

db2 drop database SALES_DB

Questo comando elimina SALES_DB.

Argomenti correlati:

v “Lezioni del supporto didattico di XML Extender” a pagina 6

v “Introduzione a XML Extender” a pagina 3

v “Lezione: Memorizzazione di un documento XML in una colonna” a pagina 7

Capitolo 1. Introduzione 31

Page 42: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

32 XML Extender - Amministrazione e programmazione

Page 43: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Parte 2. Amministrazione

Questa parte descrive come eseguire attività di gestione per XML Extender.

© Copyright IBM Corp. 1999 - 2006 33

Page 44: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

34 XML Extender - Amministrazione e programmazione

Page 45: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 2. Amministrazione

Strumenti di gestione per XML Extender

Gli strumenti di gestione di XML Extender consentono di abilitare il database e le

colonne delle tabelle per XML e di associare i dati XML alle strutture relazionali

DB2®. Per utilizzare gli strumenti di gestione XML Extender, è necessario disporre

dell’autorizzazione DBADM.

XML Extender fornisce i seguenti strumenti per completare le attività di gestione:

v Il wizard di gestione di XML Extender fornisce un’interfaccia utente grafica per

le attività di gestione.

v Il comando dxxadm fornisce un’opzione della riga comandi per le attività di

gestione.

v Le procedure memorizzate di gestione di XML Extender consentono all’utente di

richiamare i comandi di gestione da un programma.

Preparazione alla gestione di XML Extender

Per eseguire XML Extender, è necessario installare il seguente software.

Software richiesto: XML Extender richiede DB2® Database Versione 9.1.

Software facoltativo:

v Per una ricerca di testo strutturale, DB2 Database Net Search Extender Versione

9.1, disponibile con DB2 Database Versione 9.1

v Per il wizard di gestione XML Extender:

– DB2 Database Java Database Connectivity (JDBC)

– SDK 1.1.7 o successivo o JRE 1.1.1, disponibile con il Centro di controllo DB2

– JFC 1.1 con Swing 1.1, disponibile con il Centro di controllo DB2

Dopo aver installato XML Extender, è necessario completare le seguenti attività:

v Collegare XML Extender al DB2.

È necessario collegare XML Extender a tutti i database. Per un esempio fare

riferimento a:

install_dxx/samples/extenders/db2xml/cmd/getstart_prep.cmd

v Visualizzare le istruzioni di installazione.

v Creare un database per l’accesso XML.

Migrazione di XML Extender da versioni o release precedenti

Se si utilizza una versione precedente di DB2® XML Extender, è necessario migrare

ogni server di abilitato per XML Extender prima di utilizzare il database abilitato

per XML esistente con XML Extender Versione 9.1.

Il programma di migrazione di XML Extender apporta le modifiche richieste

perché i dati esistenti possano utilizzare DB2 Versione 9.1.

© Copyright IBM Corp. 1999 - 2006 35

Page 46: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Nota: dxxEnableColl viene ridernominato in dxxEnableCollection, e

dxxDisableColl viene ridenominati in dxxDisableCollection. Viene anche

aggiunta una procedura, memorizzata, db2xml.dxxDisableDB.

Quando si richiamano le procedure memorizzate, utilizzare un punto (.) invece che

un punto esclamativo (!) nel nome della procedura. Ad esempio, utilizzare

db2xml.dxxEnableColumn invece di db2xml!dxxEnableColumn.

Procedura:

Per migrare un server di abilitato per XML e le colonne abilitate per XML:

1. Installare DB2 Versione 9.1 e selezionare il componente XML Extender.

2. Dalla riga comandi DB2, immettere:

db2 connect to nome_database

db2 bind @dxxMigv.lst

dxxMigv nome_database

Un errore in questa operazione di migrazione può provocare problemi e risultati

non prevedibili come un errore durante la disabilitazione e l’impossibilità di

accedere a nuove UDF.

Panoramica sulla gestione di XML Extender

XML Extender fornisce tre metodi di gestione: il comando di gestione, le procedure

memorizzate e il wizard di gestione.

v Il comando di gestione, dxxadm, fornisce le opzioni per le varie attività di

gestione.

v Le attività di gestione possono essere eseguite richiamando le procedure

memorizzate per l’amministrazione da un programma.

v Il wizard di gestione XML Extender guida l’utente attraverso le attività di

gestione. È possibile utilizzarlo da una stazione di lavoro client.

Wizard di gestione di XML Extender

Le attività di gestione di XML Extender consistono nell’abilitare o disabilitare i

database e le colonne delle tabelle per XML Extender, creando raccolte di colonne

delle tabelle associate alle strutture di documenti XML e importando quindi i DTD

nel database. È possibile utilizzare il wizard XML Extender per completare tali

attività di gestione. Avviare il wizard con il comando dxxadmin da un prompt dei

comandi.

Dopo aver installato DB2 XML Extender, seguire le istruzioni riportate nel file

readme installato nel seguente percorso:

install_dxx/db2xml/adm_gui/readme.htm

Metodi di accesso e memorizzazione

XML Extender fornisce due metodi di accesso e memorizzazione per utilizzare

DB2® come repository XML: la colonna XML e la raccolta XML. È necessario

decidere quali sono i metodi che meglio si adattano alle necessità dell’applicazione

per accedere e modificare i dati XML.

36 XML Extender - Amministrazione e programmazione

Page 47: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

colonna XML

Memorizza e richiama interi documenti XML come dati DB2. I dati XML

sono rappresentati da una colonna XML.

raccolta XML

Decompone i documenti XML in una raccolta di tabelle relazionali o

devono essere composti in documenti XML da una raccolta di tabelle

relazionali.

La natura dell’applicazione determina il metodo di accesso e memorizzazione più

adatto e come strutturare i dati XML.

Il file DAD viene utilizzato per associare i dati XML con le tabelle DB2 mediante

questi due metodi. Figura 3 mostra il modo in cui il file DAD specifica i metodi di

accesso e memorizzazione.

Il file DAD definisce il percorso di file quali la DTD e specifica il modo in cui la

struttura di documenti XML si collega ai dati DB2. Inoltre, definisce il metodo di

accesso e memorizzazione da utilizzare con l’applicazione.

Argomenti correlati:

v “Quando utilizzare il metodo di raccolta XML” a pagina 38

v “Quando utilizzare il metodo delle colonne XML” a pagina 38

Riferimenti correlati:

v “Panoramica sulle funzioni di memorizzazione in XML Extender” a pagina 136

Figura 3. Il file DAD associa la struttura di documenti XML a una struttura di dati relazionali

DB2 e specifica il metodo di accesso e memorizzazione.

Capitolo 2. Amministrazione 37

Page 48: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Quando utilizzare il metodo delle colonne XML

Utilizzare le colonne XML in uno dei seguenti casi:

v I documenti XML esistono già o provengono da un’origine esterna e si desidera

memorizzare i documenti nel formato XML nativo. Si desidera memorizzare i

documenti in DB2® in modo da garantire integrità, archiviazione e controllo.

v I documenti XML vengono letti frequentemente, ma non vengono aggiornati.

v Si desidera utilizzare i tipi di dati del nome file per memorizzare i documenti

XML (esterni al database DB2) sul file system locale e remoto e utilizzare il

database DB2 per operazioni di ricerca e di gestione.

v È necessario eseguire ricerche di intervallo in base ai valori di elementi o

attributi XML e si conoscono gli elementi o gli attributi che verranno utilizzati di

frequente negli argomenti di ricerca.

v I documenti hanno elementi con blocchi di testo di grosse dimensioni e si

desidera utilizzare DB2 Text Extender per la ricerca di testo strutturale lasciando

inalterato il resto del documento.

Quando utilizzare il metodo di raccolta XML

Utilizzare le raccolte XML in uno dei seguenti casi:

v Sono presenti dati nelle tabelle relazionali e si desidera comporre documenti

XML in base a un determinato DTD.

v Sono presenti documenti XML che devono essere memorizzati con le raccolte di

dati che si associano alle tabelle relazionali.

v Si desidera creare viste differenti dei dati relazionali utilizzando schemi di

associazione differenti.

v Sono presenti documenti XML che provengono da altre origini dati. Sono

importanti i dati ma non le tag e si desidera memorizzare i dati nel database,

garantendo una certa flessibilità per decidere se memorizzare i dati nelle tabelle

nuove o in quelle esistenti.

Pianificazione di colonne XML

Prima di iniziare a lavorare con XML Extender per memorizzare i propri

documenti, è necessario comprendere la struttura del documento XML in modo da

poter determinare come indicizzare gli elementi e gli attributi nel documento.

Quando si pianifica il modo in cui indicizzare il documento, è necessario

determinare:

v Il tipo definito dall’utente XML in cui verrà memorizzato il documento XML

v Gli elementi e gli attributi XML che verranno ricercati frequentemente

dall’applicazione, in modo che il relativo contenuto possa essere memorizzato in

tabelle laterali e indicizzato per migliorare le prestazioni

v Se convalidare i documenti XML nella colonna con un DTD

v La struttura delle tabelle laterali e come verranno indicizzate

Tipi di dati XML per le colonne XML

XML Extender fornisce tipi XML definiti dall’utente utilizzati per definire una

colonna per contenere i documenti XML. Questi tipi di dati sono descritti in

Tabella 4 a pagina 39.

38 XML Extender - Amministrazione e programmazione

Page 49: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 4. Gli UDT di XML Extender

Colonna tipo definita

dall’utente

tipo di dati di origine Descrizione dell’utilizzo

XMLVARCHAR VARCHAR(varchar_len) Memorizza un intero

documento XML come tipi di

dati VARCHAR all’interno di

DB2®. Utilizzato per

documenti piccoli (meno di

3K) che vengono memorizzati

in DB2.

XMLCLOB CLOB(clob_len) Memorizza un intero

documento XML come un

tipo di dati CLOB all’interno

di DB2. Utilizzato per

documenti grandi (più grandi

di 3K) che vengono

memorizzati in DB2.

XMLFILE VARCHAR(512) Memorizza il nome del file di

un documento XML in DB2 e

memorizza il documento

XML in una locale del file nel

server DB2. Utilizzato per

documenti memorizzati al di

fuori del DB2.

Elementi e attributi da indicizzare per colonne XML

Una volta compresa la struttura del documento XML e i requisiti della relativa

applicazione, è possibile determinare quali elementi e attributi verranno ricercati o

estratti più frequentemente o quelli che avranno il costo più alto per effettuare una

query. Il file DAD per una colonna XML può associare i percorsi della posizione di

ogni elemento e attributo in tabelle relazionali (tabelle laterali) che contengono tali

oggetti. Le tabelle laterali vengono quindi indicizzate.

Ad esempio, Tabella 5 mostra un esempio di tipi di dati e percorsi della posizione

degli elementi e attributi dallo scenario Introduzione per le colonne XML. I dati

sono specificati come informazioni da ricercare frequentemente e i percorsi della

posizione indicano gli elementi e gli attributi che contengono i dati. E’ possibile

che il file DAD associ questi percorsi della posizione alle tabelle laterali.

Tabella 5. Elementi e attributi da ricercare

Dati Percorso della posizione

chiave ordine /Ordine/@chiave

cliente /Ordine/Cliente/Nome

prezzo /Ordine/Parte/Prezzoesteso

data di consegna /Ordine/Parte/Consegna/Dataconsegna

Il file DAD file per le colonne XML

Per le colonne XML, il file DAD prima di tutto specifica come devono essere

indicizzati i documenti memorizzati in una colonna XML. Il file DAD specifica un

DTD da utilizzare per convalidare i documenti inseriti nella colonna XML. La

dimensione di questo file può essere superiore ai 2 GB.

Capitolo 2. Amministrazione 39

Page 50: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Il file DAD per le colonne XML fornisce un’associazione di ogni dato XML che

deve essere memorizzato nelle tabelle laterali per l’indicizzazione.

Per specificare il metodo di accesso e memorizzazione della colonna XML, si

utilizza la tag <Xcolumn> nel file DAD. La tag specifica <Xcolumn> che i dati

XML vengono memorizzati e richiamati come documenti XML interi nelle colonne

del database DB2 abilitate per i dati XML.

Una colonna XML abilitata appartiene al UDT di XML Extender. Le applicazioni

possono includere la colonna in qualsiasi tabella dell’utente. Si accede ai dati della

colonna XML principalmente attraverso istruzioni SQL e UDF di XML Extender.

Argomenti correlati:

v “Pianificazione di tabelle laterali” a pagina 57

Pianificazione per le raccolte XML

Quando si pianificano le raccolte XML, è necessario avere diverse considerazioni

per comporre i documenti dai dati DB2®, decomponendo il documento XML in

dati relazionali o entrambi. Le seguenti sezioni indirizzano i problemi di

pianificazione per le raccolte XML e le considerazioni sulla composizione o

decomposizione di indirizzi.

Convalida

Una volta selezionato un metodo di accesso e di memorizzazione, è possibile

determinare se convalidare i dati. Convalidare i dati XML utilizzando DTD o uno

schema. L’utilizzo di DTD o uno schema da convalidare garantisce che il

documento XML è valido.

Per eseguire la convalida mediante DTD, è possibile che sia necessario avere DTD

nel repository XML Extender.

Importante: stabilire se convalidare i dati XML prima di inserire i dati XML in

DB2. XML Extender non convalida i dati già inseriti in DB2.

Considerazioni:

v È possibile utilizzare solo un DTD per la composizione.

v È possibile utilizzare più schemi per la composizione.

v Se non si sceglie di convalidare un documento, il DTD specificato dal

documento XML non è elaborato. È importante che i DTD siano elaborati per

risolvere le entità ed i valori predefiniti di attributi anche quando sono elaborati

i frammenti del documento che non possono essere convalidati.

File DAD per le raccolte XML

Per le raccolte XML, il file DAD associa la struttura del documento XML in tabelle

del database DB2 da cui si compone il documento o dove viene decomposto il

documento.

Ad esempio, se si ha un elemento denominato <Tax> nel documento XML,

potrebbe essere necessario associare <Tax> a una colonna denominata TAX.

Definire la relazione tra i dati i dati XML e i dati relazionali in DAD.

Specificare il nome file DAD quando si abilita una raccolta o quando viene

utilizzato il file DAD nelle procedure memorizzate della raccolta XML. Se si decide

40 XML Extender - Amministrazione e programmazione

Page 51: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

di convalidare i documenti XML con un file DTD, il file DAD può essere associato

a tale DTD. Se utilizzato come parametro di input delle procedure memorizzate

XML Extender, il file DAD ha un tipo di dati CLOB. La dimensione di questo file

può essere fino a 100 KB.

Per specificare il metodo di accesso e di memorizzazione della raccolta XML,

utilizzare la tag nel file DAD. La tag <Xcollection> specifica che i dati XML devono

essere decomposti dai documenti XML in una raccolta di tabelle relazionali o

composti in documenti XML da una raccolta di tabelle relazionali.

Una raccolta XML è un nome virtuale per una serie di tabelle relazionali che

contiene i dati XML. Le applicazioni consentono una raccolta XML di qualsiasi

tabelle utente. Queste tabelle utente possono essere tabelle di dati aziendali

esistenti oppure tabelle create recentemente da XML Extender.

Il file DAD specifica le associazioni tra gli elementi o gli attributi del documento

XML e le colonne delle tabelle. Esso utilizza i seguenti tipi di nodo per specificare

tali associazioni:

root_node

Specifica il nodo root del documento.

element_node

Identifica un elemento, che può essere l’elemento root o un elemento

secondario.

text_node

Rappresenta il testo CDATA di un elemento.

attribute_node

Rappresenta un attributo di un elemento.

Figura 4 a pagina 42 mostra un frammento dell’associazione utilizzata in un file

DAD. I nodi associano il contenuto dei documenti XML alle colonne delle tabelle

in una tabella relazionale.

Capitolo 2. Amministrazione 41

Page 52: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Nella figura precedente, le prime due colonne dell’istruzione SQL sono associate

ad un attributo e ad una colonna.

Schemi di associazione per raccolte XML

Se si utilizza una raccolta XML, è necessario selezionare uno schema di associazione

che definisce come i dati XML sono rappresentati in un database relazionale.

Poiché le raccolte XML devono corrispondere alla struttura gerarchica di

documenti XML con una struttura relazionale, è necessario comprendere le

differenze tra le due strutture. Figura 5 a pagina 43 mostra il modo in cui la

struttura gerarchica può essere associata alle colonne delle tabelle relazionali.

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "install_dxx/samples/extenders/db2xml/dtd/dad.dtd">

<DAD>

...

<Xcollection>

<SQL_stmt>

SELECT order_key, customer, part_key, color, qty

FROM order_tab o, part_tab p

WHERE order_key = 1 AND p.order_key = o.order_key

ORDER BY order_key

</SQL_stmt>

<prolog>?xml version="1.0"?</prolog>

<doctype>!DOCTYPE Order SYSTEM "dxx_install/samples/extenders/db2xml/dtd/

getstart.dtd"</doctype><root_node>

<element_node name="Order"> --> Identifica l’elemento <Order>

<attribute_node name="key"> --> Identifica l’attributo "key"

<column name="order_key"/> --> Definisce il nome della colonna,

"order_key", a cui l’elemento

e l’attributo sono associati

</attribute_node>

<element_node name="Customer"> --> Identifica un elemento secondario di

<Order> come <Customer>

<text_node> --> Specifica il testo CDATA per

l’elemento <Customer>

<column name="customer"> --> Definisce il nome della colonna

"customer", a cui viene associato

l’elemento secondario

</text_node>

</element_node>

...

</element_node>

...

</root_node>

</Xcollection>

</DAD>

Figura 4. Le definizioni di nodo in un file DAD per una raccolta XML

42 XML Extender - Amministrazione e programmazione

Page 53: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

XML Extender utilizza uno schema di associazione quando si compongono o si

decompongono documenti XML utilizzando i dati relazionali che si trovano in più

tabelle relazionali. Prima di creare il file DAD, è necessario considerare come i dati

XML sono associati alla raccolta XML.

Tipi di schemi di associazione

Lo schema di associazione viene specificato nell’elemento <Xcollection> del file

DAD. XML Extender fornisce due tipi di schemi di associazione: associazione SQL e

associazione del database relazionale (RDB_node).

associazione SQL

Consente un’associazione diretta dai dati relazionali ai documenti XML

mediante una semplice istruzione SQL. L’associazione SQL è utilizzata solo

per la composizione; non viene utilizzata per la decomposizione.

L’associazione SQL viene definita con l’elemento SQL_stmt nel file DAD. Il

contenuto dell’elemento SQL_stmt è una valida istruzione SQL. L’elemento

SQL_stmt associa le colonne nella clausola SELECT agli elementi XML o

attributi utilizzati nel documento XML. I nomi di colonna nella clausola

SELECT dell’istruzione SQL consentono di definire il valore di

attribute_node o il contenuto di text_node. La clausola FROM definisce le

tabelle che contengono i dati; la clausola WHERE specifica la condizione

join e search.

Figura 5. Struttura di documenti XML associata a colonne di tabelle relazionali

Capitolo 2. Amministrazione 43

Page 54: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

L’associazione SQL consente agli utenti del database DB2 di associare i dati

mediante SQL. Quando si utilizza l’associazione SQL, è necessario poter

unire tutte le tabelle in una istruzione SELECT per formare

un’interrogazione. Se una istruzione SQL non è sufficiente, provare a

utilizzare l’associazione RDB_node. Per collegare tutte le tabelle, è

preferibile utilizzare una relazione tra chiave primaria e chiave esterna tra

le tabelle.

associazione RDB_node

Definisce l’ubicazione del contenuto di un elemento XML o il valore di un

attributo XML in modo tale che XML Extender può determinare dove

memorizzare o richiamare i dati XML.

Questo metodo utilizza l’associazione RDB_node fornita da XML Extender,

che contiene una o più definizioni del nodo per le tabelle, colonne

facoltative e condizioni facoltative. Le tabelle e le colonne sono utilizzate

per definire come i dati XML sono memorizzati nel database. La

condizione specifica i criteri per la selezione dei dati XML o il modo con

cui unire le tabelle delle raccolte XML.

Per definire uno schema di associazione, creare un file DAD con un elemento

<Xcollection>. Figura 6 a pagina 45 mostra un frammento di un file DAD di

esempio con un’associazione SQL per una raccolta XML, che compone una serie di

documenti XML dai dati in tre tabelle relazionali.

44 XML Extender - Amministrazione e programmazione

Page 55: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

XML Extender fornisce diverse procedure memorizzate che gestiscono i dati in una

raccolta XML. Queste procedure memorizzate supportano entrambi i tipi di

associazione, ma richiedono che il file DAD segue le regole descritte in “Requisiti

dello schema di associazione”.

Requisiti dello schema di associazione

Le seguenti sezioni descrivono i requisiti per ogni tipo degli schemi di associazione

della raccolta XML.

Associazione dei requisiti dello schema per l’associazione SQL

In questo schema di associazione, è necessario specificare l’elemento

SQL_stmt nell’elemento DAD <Xcollection>. L’elemento SQL_stmt deve

contenere una singola istruzione SQL che può associare più tabelle

relazionali con la query predicate. In aggiunta, le seguenti clausole sono

obbligatorie:

v Clausola SELECT

– Assicura che il nome della colonna si a univoco. Se due tabelle hanno

lo stesso nome di colonna, utilizzare la parola chiave AS per creare un

nome alternativo per una delle due.

– Raggruppare le colonne della stessa tabella e utilizzare il livello

cronologico logico delle tabelle relazionali. Ciò significa che le colonne

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "dxx_install/samples/db2xml/dtd/dad.dtd">

<DAD>

<dtdid>dxx_install/samples/db2xml/dtd/dad/

getstart.dtd</dtdid>

<validation>YES</validation>

<Xcollection>

<SQL_stmt>

SELECT o.order_key, customer, p.part_key, quantity, price, tax, date,

ship_id, mode, comment

FROM order_tab o, part_tab p,

table(select substr(char(timestamp(generate_unique())),16)

as ship_id, date, node, from ship_tab) shipid

WHERE p.price > 2500.00 and s.date > "1996-06-01" AND

p.order_key = o.order_key and s.part_key = p.part_key

</SQL_stmt>

<prolog>?xml version="1.0"?</prolog>

<doctype>!DOCTYPE DAD SYSTEM "dxx_install

/samples/db2xml/dtd/getstart.dtd"</doctype>

<root_node>

<element_node name="Order">

<attribute_node name="key">

<column_name="order_key"/>

</attribute_node>

<element_node name="Customer">

<text_node>

<column name="customer"/>

</text_node>

<element_node>

...

</element_node><!-end Part->

</element_node><!-end Order->

</root_node>

</Xcollection>

</DAD>

Figura 6. Schema di associazione SQL

Capitolo 2. Amministrazione 45

Page 56: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

sono raggruppate in base a come le tabelle sono associate alla

struttura cronologica del documento XML. Nella clausola SELECT, è

necessario che le colonne delle tabelle di livello più alto precedano le

colonne delle tabelle di livello più basso. Il seguente esempio

dimostra la relazione gerarchica tra le tabelle:

SELECT o.order_key, customer, p.part_key, quantity, price, tax,

ship_id, date, mode

In questo esempio, order_key e customer dalla tabella ORDER_TAB

hanno il livello di relazione superiore poiché si trovano in una

posizione superiore della struttura gerarchica del documento XML. Le

colonne ship_id, date e mode dalla tabella SHIP_TAB si trovano al

livello relazionale più basso.

– L’algoritmo di composizione utilizza le informazioni della chiave

candidata come un suggerimento per assistere l’utente durante

l’elaborazione. Utilizzare una chiave candidata a singola colonna

all’inizio di ogni livello di tabella della clausola select. Se questa

chiave non è disponibile in una tabella, la query ne deve generare una

per la tabella che utilizza un’espressione e la funzione integrata

personalizzata, generate_unique(). Le chiavi generate non devono

apparire nel documento di output, ma devono essere presenti nella

clausola SELECT. Nell’esempio precedente, o.order_key è la chiave

primaria per ORDER_TAB e part_key è la chiave primaria per

PART_TAB. Si trovano all’inizio del relativo gruppo di colonne che

devono essere selezionate. Poiché la tabella SHIP_TAB non dispone di

una chiave primaria, una deve essere generata, in tal caso, ship_id.

Questa chiave primaria viene elencata come prima colonna per il

gruppo tabella SHIP_TAB. Utilizzare la clausola FROM per generare

la colonna della chiave primaria, come mostrato nel seguente

esempio.v Clausola FROM

– Utilizzare un’espressione di tabella e la funzione integrata,

generate_unique(), per generare una singola chiave per le tabelle che

non hanno una singola chiave primaria. Ad esempio:

FROM order_tab as o, part_tab as p,

table(select substr(char(timestamp

(generate_unique())),16) as

ship_id, date, mode from ship_tab) as s

In questo esempio, una singola chiave candidata di colonna è

generata con la funzione, generate_unique() e viene fornito un alias

definito ship_id.

– Utilizzare un nome alias quando necessario per distinguere una

colonna. Ad esempio, è possibile utilizzare o per ORDER_TAB, p per

PART_TAB e s per SHIP_TAB.v Clausola WHERE

– Specificare la condizione join che viene associata alle tabelle della

raccolta. Ad esempio:

WHERE p.price > 2500.00 AND s.date > ’2003-06-01’ AND

p.order_key = o.order_key AND s.part_key = p.part_key

– Specificare ogni altra condizione di ricerca nel predicato. E’ possibile

utilizzare ogni predicato valido.v clausola ORDER BY

– Definire la clausola ORDER BY alla fine dell’elemento SQL_stmt.

46 XML Extender - Amministrazione e programmazione

Page 57: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

– Assicurarsi che i nomi della colonna corrispondano ai nomi della

colonna nella clausola SELECT.

– Elencare le chiavi candidate della singola colonna nell’ordine del

livello gerarchico delle tabelle corrispondenti.

– Conservare l’ordine decrescente della gerarchia delle entità. La

colonna specificata nella clausola ORDER BY deve essere la prima

colonna elencata per ogni entità. Il mantenimento dell’ordine assicura

che i documenti XML che devono essere generati non contengano

duplicati errati.

– Non qualificare le colonne nella clausola ORDER BY da un nome

tabella o schema.

Sebbene l’elemento SQL_stmt dispone di requisiti precedenti, è più potente

poiché è possibile specificare qualsiasi predicato nella clausola WHERE se

l’espressione nel predicato utilizza le colonne nelle tabelle.

Requisiti dello schema di associazione per l’associazione RDB_node

Quando si utilizza questo metodo di associazione, non utilizzare l’elemento

SQL_stmt nell’elemento <Xcollection> del file DAD. Utilizzare invece

l’elemento RDB_node come elemento secondario dell’elemento

element_node superiore e di ogni attribute_node e text_node.

v Elemento RDB_node per element_node superiore

L’elemento superiore element_node nel file DAD rappresenta l’elemento

root del documento XML. Specificare RDB_node per element_node

superiore in base a questi requisiti:

– I caratteri finali della riga sono consentiti nelle istruzioni della

condizione.

– Gli elementi di condizione possono fare riferimento al nome di una

colonna un numero illimitato di volte.

– Specificare tutte le tabelle associate ai documenti XML. Ad esempio,

la seguente associazione specifica tre tabelle in RDB_node di

element_node <Order>, che indica element_node superiore:

<element_node name="Order">

<RDB_node>

<table name="order_tab"/>

<table name="part_tab"/>

<table name="ship_tab"/>

<condition>

order_tab.order_key = part_tab.order_key AND

part_tab.part_key = ship_tab.part_key

</condition>

</RDB_node>

Non esistono limitazioni sull’ordine dei predicati dell’elemento

condition del nodo root.L’elemento condition può essere vuoto o

mancante solo se nella raccolta è presente solo una tabella.

– Se si effettua la decomposizione, o di abilita la raccolta XML

specificata dal file DAD, specificare una chiave primaria per ogni

tabella. La chiave primaria può essere costituita da una o più colonne,

e in quest’ultimo caso è detta chiave composta. La chiave primaria è

specificata aggiungendo una chiave di attributo all’elemento di tabella

di RDB_node. Quando una chiave composta viene fornita, l’attributo

chiave è specificato dai nomi delle colonne chiave separate da uno

spazio. Ad esempio:

<table name="part_tab" key="part_key price"/>

Capitolo 2. Amministrazione 47

Page 58: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Le informazioni specificate per la decomposizione sono ignorate

quando viene composto un documento.

– Utilizzare l’attributo orderBy per ricomporre documenti XML che

contengono gli elementi o attributi con più ricorrenze alla struttura

originale. Questo attributo consente di specificare il nome di una

colonna che sarà la chiave utilizzata per conservare l’ordine del

documento. L’attributo orderBy è parte dell’elemento della tabella nel

file DAD ed è un attributo opzionale.v Elemento RDB_node per ogni attribute_node e text_node

È necessario specificare RDB_node per ogni attribute_node e text_node,

che richiama la procedura memorizzata dalla tabella, colonna e nella

condizione query per reperire i dati. È necessario specificare i valori di

tabella e di colonna; il valore della condizione è facoltativo.

– Specificare il nome della tabella che contiene i dati della colonna. Il

nome della tabella deve essere incluso nell’elemento RDB_node

dell’elemento element_node superiore. In questo esempio, per

text_node dell’elemento <Price>, la tabella viene specificata come

PART_TAB.

<element_node name="Price">

<text_node>

<RDB_node>

<table name="part_tab"/>

<column name="price"/>

<condition>

price > 2500.00

</condition>

</RDB_node>

</text_node>

</element_node>

– Specificare il nome della colonna che contiene i dati per il testo

dell’elemento. Nell’esempio precedente, la colonna è specificata come

PRICE.

– Specificare una condizione se si desidera generare i documenti XML

utilizzando la condizione della query. La sintassi consentita per

<condition> è la seguente:

- columnname

- operator

- literal

Nell’esempio sopra riportato, la condizione è specificata come price >

2500.00. Soltanto i dati che rispondono a tale condizione saranno

presenti nei documenti XML generati. La condizione deve essere una

clausola WHERE valida.

– Se si sta decomponendo un documento o se si abilita la raccolta XML

specificata dal file DAD, specificare il tipo di colonna per ogni

attribute_node e text_node. I tipi di colonna sono specificati

aggiungendo il tipo di attributo all’elemento della colonna. Ad

esempio:

<column name="order_key" type="integer"/>

Le informazioni specificate per la decomposizione sono ignorate

quando viene composto un documento.v Mantenere l’ordine top-down della gerarchia di entità. Verifica che i

nodi di elementi siano nidificati correttamente in modo che XML

Extender possa comprendere la relazione tra gli elementi durante la

48 XML Extender - Amministrazione e programmazione

Page 59: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

composizione o la decomposizione. Ad esempio, utilizzando il seguente

file DAD, che non nidifica Shipment all’interno di Part:

<element_node name="Part">

...

<element_node name="ExtendedPrice">

...

</element_node>

...

</element_node> <!-- end of element Part -->

<element_node name="Shipment" multi_occurrence="YES">

<element_node name="ShipDate">

...

</element_node>

<element_node name="ShipMode">

...

</element_node>

</element_node> <!-- end of element Shipment-->

Potrebbe produrre un file XML in cui Part e Shipment sono elementi

secondari.

<Part color="black ">

<key>68</key>

<Quantity>36</Quantity>

<ExtendedPrice>34850.16</ExtendedPrice>

<Tax>6.000000e-2</Tax>

</Part>

<Shipment>

<ShipDate>1998-08-19</ShipDate>

<ShipMode>BOAT </ShipMode>

</Shipment>

Quindi è necessario disporre di un file DAD che nidifica Shipment

all’interno di Part:

<element_node name="Part">

...

<element_node name="ExtendedPrice">

...

</element_node>

...

<element_node name="Shipment" multi_occurrence="YES">

<element_node name="ShipDate">

...

</element_node>

<element_node name="ShipMode">

...

</element_node>

</element_node> <!-- end of element Shipment-->

</element_node> <!-- end of element Part -->

Che produce un file XML con Shipment come elemento secondario di

Part:

<Part color="black ">

<key>68</key>

<Quantity>36</Quantity>

<ExtendedPrice>34850.16</ExtendedPrice>

<Tax>6.000000e-2</Tax>

<Shipment>

<ShipDate>1998-08-19</ShipDate>

<ShipMode>BOAT </ShipMode>

</Shipment>

</Part>

Capitolo 2. Amministrazione 49

Page 60: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Con l’approccio dell’associazione RDB_node, non è necessario fornire

istruzioni SQL. Tuttavia, l’inserimento di condizioni query complesse

nell’elemento RDB_node può essere più difficile.

Requisiti della dimensione della tabella di decomposizione per

l’associazione del nodo RDB

La decomposizione utilizza l’associazione RDB_node per specificare il modo in cui

un documento XML viene decomposto in tabelle di database DB2 estraendo i

valori di elementi e attributi in righe delle tabelle. I valori di ogni documento XML

vengono memorizzati in una o più tabelle DB2. Ogni tabella può contenere un

massimo di 10240 righe decomposte da ogni documento. Ad esempio, se un

documento XML viene decomposto in cinque tabelle, ognuna di queste potrà avere

un massimo di 10240 righe per quel documento particolare.

L’utilizzo di elementi a più ricorrenze (elementi con percorsi delle posizioni che

possono essere presenti più di una volta nella struttura XML) influenza il numero

di righe, inserito per ogni documento. Ad esempio, un documento che contiene un

elemento <Part> presente 20 volte può essere decomposto come 20 righe in una

tabella. Quando si utilizzano elementi a più ricorrenze, tenere presente che è

possibile decomporre un numero massimo di 10240 righe in una tabella da un

singolo documento.

Argomenti correlati:

v “File DAD per le raccolte XML” a pagina 167

Attività correlate:

v “Memorizzazione di DTD nella tabella di repository” a pagina 52

Convalida automatica dei documenti XML

Dopo aver scelto un metodo di accesso e di memorizzazione, sia una colonna XML

che una raccolta XML, è possibile determinare se convalidare i documenti XML. E’

possibile inoltre convalidare i documenti XML composti dalle raccolte XML.

E’ possibile avere i relativi dati XML convalidati automaticamente specificando YES

per la convalida in un file DAD. Per avere un documento convalidato quando è

memorizzato in DB2®, è necessario specificare un DTD nell’elemento <dtdid> o

nella specifica <!DOCTYPE> nel documento originale. Per avere un documento

convalidato quando è composto da una raccolta XML in DB2, è necessario

specificare un DTD nell’elemento <dtdid> o nell’elemento <doctype> nel file DAD.

I seguenti fattori devono essere presi in considerazione quando si decide se

convalidare i relativi documenti.

v L’ID o schema DTD è utile solo se si decide di convalidare il documento XML.

Per convalidare il file DAD con uno schema, inserire le tag dello schema che

associano il file DAD il file dello schema. Ad esempio:

<schemabindings>

<nonamespacelocation location="path/schema_name.xsd"/>

</schemabindings>

v Non è necessario un DTD per memorizzare o archiviare documenti XML.

v Potrebbe essere necessario elaborare il DTD per impostare i valori dell’entità e

gli attributi predefiniti a prescindere da se si sceglie di convalidare.

50 XML Extender - Amministrazione e programmazione

Page 61: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v Se non specifica NO per la convalida nel file DAD, allora il file DTD specificato

dal documento XML non viene processato.

v Convalidare i relativi dati XML ha un impatto sulla prestazione.

Abilitare i server del database per XML

Prima di memorizzare o richiamare i documenti XML da DB2 con XML Extender, è

necessario abilitare il server del database per XML. XML Extender abilita il server

del database che si è connesso a, utilizzando l’istanza corrente.

Quando si abilita un server del database per XML, XML Extender effettua queste

attività:

v Crea tutti gli UDT (user-defined types), UDF (user-defined functions) e le

procedure memorizzate per XML Extender

v Crea e compila le tabelle di controllo con i metadati necessari che XML Extender

richiede

v Crea gli schemi DB2XML negli spazi della tabella definita dall’utente.

Il nome completo di una funzione XML è db2xml.function-name, dove db2xml è

un identificativo che fornisce un raggruppamento logico per gli oggetti SQL. E’

possibile utilizzare il nome completo ovunque in riferimento ad un UDF o ad un

UDT. E’ possibile inoltre, omettere il nome schema quando ci si riferisce ad un

UDF o ad un UDT; in questo caso, DB2 utilizza il percorso della funzione per

determinare il tipo di funzione o di dati.

v Assegna privilegi necessari alle tabelle di metadati.

Procedura:

E’ possibile abilitare un server del database con la procedura guidata di gestione o

dalla riga di comando. Per effettuare questa attività dalla riga di comando, digitare

dxxadm dalla riga di comando e specificare il server del database che si deve

abilitare.

Il seguente esempio abilita un server del database chiamato SALES_DB.

dxxadm enable_db SALES_DB

Per abilitare un server del database utilizzando la procedura guidata di

amministrazione, completare i seguenti passaggi:

1. Avviare la procedura guidata di gestione e fare clic su Abilita database dalla

finestra Launchpad.

Se un database del è già abilitato, il pulsante Disabilita database appare. Se il

database del è disabilitato, il pulsante Abilita database appare.

Quando il server del database è abilitato, viene visualizza nuovamente la

finestra LaunchPad.

Dopo aver abilitato un server del database, è possibile utilizzare UDT, UDF e

procedure memorizzate di XML Extender.

Argomenti correlati:

v “Migrazione di XML Extender da versioni o release precedenti” a pagina 35

Capitolo 2. Amministrazione 51

Page 62: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Creazione di una tabella XML

Tale attività è parte dell’attività più grande di definizione ed abilitazione di una

colonna XML.

Una tabella XML viene utilizzata per memorizzare i documenti XML intatti. Per

memorizzare interi documenti nel proprio database con DB2 XML Extender, è

necessario creare una tabella in modo che contenga una colonna con un UDT

(user-defined type) XML. DB2 XML Extender fornisce tre UDT per memorizzare i

relativi documenti XML come dati colonna. Questi UDT sono: XMLVARCHAR,

XMLCLOB e XMLFILE. Quando una tabella contiene una colonna di un tipo XML,

è possibile allora abilitare la tabella per XML.

E’ possibile creare una nuova tabella per aggiungere una colonna di tipo XML

utilizzando la procedura guidata di gestione o la riga di comando.

Procedura:

Per creare una tabella con una colonna di tipo XML utilizzando la riga di

comando:

Aprire il prompt dei comandi DB2 e digitare un’istruzione Crea tabella.

Ad esempio, in un’applicazione di vendita, potrebbe essere necessario memorizzare

un ordine di elementi formattato per XML in una colonna chiamata ORDER nella

tabella SALES_TAB. Questa tabella inoltre, presenta le colonne INVOICE_NUM e

SALES_PERSON. Poiché si tratta di un ordine piccolo, si memorizza l’ordine di

vendite utilizzando il tipo XMLVARCHAR. La chiave primaria è INVOICE_NUM.

La seguente istruzione CREATE TABLE crea una tabella con una colonna del tipo

XML:

CREATE TABLE sales_tab(

invoice_num char(6) NOT NULL PRIMARY KEY,

sales_person varchar(20),

order db2xml.XMLVarchar);

Dopo aver creato una tabella, il passaggio successivo consiste nell’abilitazione della

colonna per i dati XML.

Argomenti correlati:

v “Pianificazione di tabelle laterali” a pagina 57

Memorizzazione di DTD nella tabella di repository

È possibile utilizzare DTD per convalidare i dati XML in una colonna o in una

raccolta XML. I DTD possono essere memorizzati nella relativa tabella di

repository, una tabella database denominata DTD_REF. Tale tabella ha il nome

schema di DB2XML. Ogni DTD nella tabella DTD_REF dispone di un ID univoco.

XML Extender crea la tabella DTD_REF quando si abilita un database per XML. È

possibile inserire il DTD dalla riga comandi o utilizzando il wizard di gestione.

Procedura:

Per inserire il DTD utilizzando il wizard di gestione:

52 XML Extender - Amministrazione e programmazione

Page 63: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

1. Avviare il suddetto wizard e fare clic su Importa DTD dalla finestra di avvio

per importare un file DTD esistente nel repository DTD per il database

corrente. Viene visualizzata la finestra di importazione DTD.

2. Specificare il nome del file DTD nel campo Nome file DTD.

3. Immettere l’ID DTD nel campo ID DTD.

L’ID DTD è l’identificativo per il DTD. Esso può essere anche il percorso che

specifica la posizione del DTD sul sistema locale. L’ID DTD deve corrispondere

al valore specificato nel file DAD per l’elemento <DTDID>.

4. Facoltativo: immettere il nome dell’autore del DTD nel campo Autore.

5. Fare clic su Fine per inserire il DTD nella relativa tabella di repository,

DB2XML.DTD_REF e ritornare alla finestra di avvio.

Per inserire un DTD dalla riga comandi, immettere un’istruzione SQL INSERT da

Tabella 6. Ad esempio:

DB2 INSERT into DB2XML.DTD_REF values(’install_dxx

/samples/extenders/db2xml/dtd/getstart.dtd’,

DB2XML.XMLClobFromFile(’install_dxx/dxxsamples/dtd/getstart.dtd’,

0, ’user1’, ’user1’, ’user1’);

Tabella 6. Le definizioni di colonna per la tabella di repository DTD

Nome colonna Tipo di dati Descrizione

DTDID VARCHAR(128) ID del DTD.

CONTENT XMLCLOB Contenuto del DTD.

USAGE_COUNT INTEGER Numero di colonne e di raccolte XML nel

database che utilizzano tale DTD.

AUTHOR VARCHAR(128) Autore del DTD, informazioni facoltative che

l’utente può immettere.

CREATOR VARCHAR(128) ID utente che esegue il primo inserimento.

UPDATOR VARCHAR(128) ID utente che esegue l’ultimo aggiornamento.

Abilitazione di colonne XML

Per memorizzare un documento XML in un database DB2, è necessario abilitare la

colonna che conterrà il documento per XML. L’abilitazione di una colonna la

prepara per l’indicizzazione in modo che sia possibile eseguire ricerche

rapidamente. È possibile abilitare una colonna utilizzando il wizard di gestione o

la riga comandi di XML Extender. La colonna deve essere di tipo XML.

Quando XML Extender abilita una colonna XML, esegue le seguenti operazioni:

v Legge il file DAD per:

– Verificare la presenza del file DTD nella tabella DTD_REF, se è stato

specificato DTDID.

– Creare tabelle laterali sulla colonna XML a scopo di indicizzazione.

– Preparare la colonna per contenere i dati XML.v Facoltativamente, crea una vista predefinita della tabella e delle tabelle laterali

XML. Nellavista predefinita sono visualizzate la tabella dell’applicazione e le

tabelle laterali.

v Specifica una colonna ROOT ID, se non è già stata specificata.

Dopo aver abilitato una colonna XML, è possibile:

Capitolo 2. Amministrazione 53

Page 64: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v Creare gli indici sulle tabelle laterali.

v Inserire documenti XML nella colonna XML.

v Interrogare, aggiornare o ricercare i documenti XML nella colonna XML.

È possibile abilitare le colonne XML utilizzando il wizard di gestione o la riga

comandi DB2.

Procedura (mediante il wizard di gestione):

Per abilitare le colonne XML utilizzando il wizard di gestione:

1. Impostare e avviare il wizard.

2. Fare clic su Operazioni con le colonne XML dalla finestra Launchpad per

visualizzare le attività relative alle colonne di XML Extender. Viene aperta la

finestra Selezione un’attività.

3. Fare clic su Abilita una colonna e quindi su Avanti.

4. Specificare la tabella e la colonna.

v Selezionare la tabella che contiene la colonna XML dal campo Nome tabella.

v Selezionare la colonna da abilitare dal campo Nome colonna.5. Specificare il nome e il percorso del file DAD nel campo Nome file DAD. Ad

esempio:

install_dxx/samples/dad/getstart.dad

6. Facoltativo: immettere il nome di un tablespace esistente nel campo Tablespace.

Il tablespace predefinito contiene le tabelle laterali create da XML Extender. Se

si specifica un tablespace, le tabelle laterali verranno create in quel tablespace.

Se invece non si specifica alcun tablespace, le tabelle laterali verranno create nel

tablespace predefinito.

7. Facoltativo: immettere il nome della vista predefinita nel campo Vista

predefinita.

Se specificata, la vista predefinita viene creata automaticamente quando viene

abilitata la colonna. La vista predefinita unisce la tabella XML e tutte le tabelle

laterali correlate.

8. Suggerimento: immettere il nome della colonna della chiave primaria per la

tabella nel campo ID root.

XML Extender utilizza il valore di ID root come identificativo univoco per

associare tutte le tabelle laterali alla tabella dell’applicazione. XML aggiunge

quindi la colonna DXXROOT_ID alla tabella dell’applicazione e genera un

identificativo.

9. Fare clic su Fine per abilitare la colonna XML, creare le tabelle laterali e tornare

alla finestra Launchpad.

v Se la colonna viene abilitata correttamente, verrà ricevuto il seguente

messaggio: colonna abilitata.

v Se invece la colonna non viene abilitata correttamente, viene visualizzato un

messaggio di errore che richiede di correggere i valori dei campi di

immissione fino a c he la colonna non verrà abilitata.

Procedura (mediante la riga comandi):

Per abilitare una colonna XML utilizzando la riga comandi, utilizzare il comando

DXXADM enable_column.

Sintassi:

54 XML Extender - Amministrazione e programmazione

Page 65: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

�� dxxadm enable_column nome_db nome_tb nome_col file_DAD �

� -t

tablespace

-v

vista_predefinita

-r

id_root ��

Parametri:

nome_db

Il nome del database .

nome_tb

Il nome della tabella che contiene la colonna da abilitare.

nome_col

Il nome della colonna XML che viene abilitata.

file_DAD

Il nome del file che contiene la definizione DAD (document access

definition).

vista_predefinita

Facoltativo. Il nome della vista predefinita creata da XML Extender per

unire una tabella dell’applicazione e tutte le relative tabelle laterali.

id_root Facoltativo, ma consigliato. Il nome della colonna della chiave primaria

nella tabella dell’applicazione e un identificativo univoco che associate

tutte le tabelle laterali alla tabella dell’applicazione. XML Extender utilizza

il valore di ROOT_ID come identificativo univoco per associare tutte le

tabelle laterali alla tabella dell’applicazione. Se ROOT ID non è specificato,

XML Extender aggiunge la colonna DXXROOT_ID alla tabella

dell’applicazione e genera un identificativo.

Limitazione: se la tabella dell’applicazione ha un nome per la colonna

uguale a DXXROOT_ID, è necessario specificare il parametro id_root,

altrimenti si verifica un errore.

Esempio:

dxxadm enable_column SALES_DB sales_tab order getstart.dad

-v sales_order_view -r INVOICE_NUMBER

In questo esempio, la colonna ORDER è abilitata nella tabella SALES_TAB. Il file

DAD è getstart.dad, la vista predefinita è sales_order_view e l’ID ROOT

èINVOICE_NUMBER.

Con questo esempio, la tabella SALES_TAB ha le seguenti colonne:

Nome colonna Tipo di dati

INVOICE_NUM CHAR(6)

SALES_PERSON VARCHAR(20)

ORDER XMLVARCHAR

Le seguenti tabelle laterali sono create in base alla specifica DAD:

Capitolo 2. Amministrazione 55

Page 66: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

ORDER_SIDE_TAB:

Nome colonna Tipo di dati Espressione path

ORDER_KEY INTEGER /Order/@Key

CUSTOMER VARCHAR(50) /Order

/Customer

/Name

INVOICE_NUM CHAR(6) N/D

PART_SIDE_TAB:

Nome colonna Tipo di dati Espressione path

PART_KEY INTEGER /Order/Part/@Key

PRICE DOUBLE /Order/Part

/ExtendedPrice

INVOICE_NUM CHAR (6) N/D

SHIP_SIDE_TAB:

Nome colonna Tipo di dati Espressione path

DATE DATE /Order/Part/

Shipment/ShipDate

INVOICE_NUM CHAR (6) N/D

Tutte le tabelle laterali hanno la colonna INVOICE_NUM dello stesso tipo in

quanto è specificato l’ID ROOT dalla chiave primaria INVOICE_NUM nella tabella

dell’applicazione. Una volta abilitata la colonna, il valore della colonna

INVOICE_NUM viene inserito nelle tabelle laterali quando una riga viene inserita

nella tabella principale. Se si specifica una vista predefinita quando si abilita la

colonna XML ORDER, alloraXML Extender crea una vista predefinita,

sales_order_view. La vista unisce le tabelle precedenti mediante la seguente

istruzione:

CREATE VIEW sales_order_view(invoice_num, sales_person, order,

order_key, customer, part_key, price, date)

AS

SELECT sales_tab.invoice_num, sales_tab.sales_person, sales_tab.order,

order_side_tab.order_key, order_side_tab.customer,

part_side_tab.part_key, part_side_tab.price,

ship_tab.date

FROM sales_tab, order_side_tab, part_side_tab, ship_side_tab

WHERE sales_tab.invoice_num = order_side_tab.invoice_num

AND sales_tab.invoice_num = part_side_tab.invoice_num

AND sales_tab.invoice_num = ship_side_tab.invoice_num

Se si specifica un tablespace, le tabelle laterali verranno create in quel tablespace.

Se invece non si specifica alcun tablespace, le tabelle laterali verranno create nel

tablespace predefinito.

56 XML Extender - Amministrazione e programmazione

Page 67: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Pianificazione di tabelle laterali

Le tabelle laterali sono tabelle DB2® utilizzate per estrarre il contenuto di un

documento XML in cui verrà eseguita una ricerca molto frequentemente. La

colonna XML è associata alle tabelle laterali che contengono il contenuto del

documento XML. Quando il documento XML viene aggiornato nella tabella

dell’applicazione, i valori nelle tabelle vengono aggiornati automaticamente.

Figura 7 mostra una colonna XML con tabelle laterali.

Quando si pianificano le tabelle laterali, è necessario considerare come organizzare

le tabelle, quante tabelle creare e se creare una vista predefinita per le tabelle.

Basare tali decisioni sulla presenza di elementi e attributi sui requisiti per le

prestazioni dell’interrogazione. Non pianificare l’aggiornamento delle tabelle

laterali: queste verranno aggiornate automaticamente quando il documento viene

aggiornato nella colonna XML.

Ricorrenze multiple:

Quando gli elementi e gli attributi sono presenti più volte nelle tabelle laterali,

tenere presente quanto riportato di seguito nella pianificazione:

v Per gli elementi o gli attributi in un documento XML che ha più ricorrenze, è

necessario creare una tabella laterale separata per ogni elemento o attributo XML

con più ricorrenze, a causa della struttura complessa di documenti XML. Ciò

significa che gli elementi o gli attributi hanno percorsi che sono presenti più

volti e che devono essere associati a una tabella con una sola colonna. Non deve

avere alcun’altra colonna.

v Quando un documento ha più percorsi ricorrenti, XML Extender aggiunge una

colonna denominata DXX_SEQNO con un tipo INTEGER a ogni tabella laterale

per tenere traccia dell’ordine degli elementi che si verificano più di una volta.

Con DXX_SEQNO, è possibile richiamare un elenco di elementi nello stesso

ordine del documento XML originale specificando ORDER BY DXX_SEQNO in

una interrogazione SQL.

Figura 7. Una colonna XML il cui contenuto è associato alle tabelle laterali. Nella colonna è

presente un file XML associato alle tabelle laterali che contengono il contenuto del

documento XML.

Capitolo 2. Amministrazione 57

Page 68: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Viste predefinite e prestazioni dell’interrogazione:

Quando si abilita una colonna XML, è possibile specificare una vista di sola lettura

predefinita che unisce la tabella dell’applicazione e le tabelle laterali utilizzando un

ID univoco, detto ROOT ID. Con la vista predefinita, è possibile ricercare i

documenti XML interrogando le tabelle laterali. Ad esempio, se è presente la

tabella dell’applicazione SALES_TAB e le tabelle laterali ORDER_TAB, PART_TAB

e SHIP_TAB, l’interrogazione avrà il seguente aspetto:

SELECT sales_person FROM sales_order_view

WHERE price > 2500.00

L’istruzione SQL restituisce i nomi di addetti alle vendite in SALES_TAB che

hanno ordini memorizzati nella colonna ORDER in cui la colonna PRICE è

maggiore di 2500.00.

Il vantaggio di interrogare la vista predefinita consiste nel fatto che viene fornita

una singola vista virtuale della tabella e delle tabelle laterali dell’applicazione.

Tuttavia, più tabelle laterali vengono create, più costosa sarà l’interrogazione.

Pertanto, la creazione della vista predefinita è consigliata solo quando il numero

totale di colonne delle tabelle laterali è piccolo. Le applicazioni possono creare le

proprie viste che si uniscono alle colonne delle tabelle laterali.

Indicizzazione delle tabelle laterali

Tale attività è parte dell’attività più grande di definizione ed abilitazione di una

colonna XML.

Le tabelle laterali contengono i dati XML nelle colonne specificate quando si crea il

file DAD. Dopo aver abilitato una colonna XML e creato le tabelle laterali, è

possibile indicizzare le tabelle laterali. Indicizzare queste tabelle aiuta a migliorare

la prestazione delle query rispetto ai documenti XML.

Procedura:

Per creare un indice per le relative tabelle laterali da una linea di comando del

database DB2, utilizzare l’istruzione DB2 CREATE INDEX SQL.

Il seguente esempio crea gli indici su quattro tabelle laterali utilizzando il prompt

dei comandi DB2.

DB2 CREATE INDEX KEY_IDX

ON ORDER_SIDE_TAB(ORDER_KEY)

DB2 CREATE INDEX CUSTOMER_IDX

ON ORDER_SIDE_TAB(CUSTOMER)

DB2 CREATE INDEX PRICE_IDX

ON PART_SIDE_TAB(PRICE)

DB2 CREATE INDEX DATE_IDX

ON SHIP_SIDE_TAB(DATE)

58 XML Extender - Amministrazione e programmazione

Page 69: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Composizione dei documenti XML utilizzando l’associazione SQL

E’ necessario utilizzare l’associazione SQL per comporre i documenti XML se si

desidera utilizzare un’istruzione SQL per definire la tabella e le colonne che

effettueranno la derivata dei dati nel documento XML. E’ possibile utilizzare

l’associazione SQL solo per la composizione dei documenti XML. Un file DAD

viene creato per comporre il documento XML con l’associazione SQL.

Prerequisiti:

Prima di comporre i relativi documenti, è necessario prima di tutto associare la

relazione tra le proprie tabelle del database DB2 e il documento XML. Questo

passaggio include l’associazione della gerarchia del documento XML e specifica

come i dati nel documento associano una tabella del database DB2.

Procedura:

Per comporre i documenti XML dalla riga di comando, completare i seguenti

passaggi:

1. Creare un nuovo documento in un editor di testo e digitare la seguente

sintassi:

<?XML version="1.0"?>

<!DOCTYPE DAD SYSTEM "path/dad.dtd">

2. Inserire le tag <DAD> </DAD>.

L’elemento DAD conterrà tutti gli altri elementi.

3. Inserire le tag utilizzate per convalidare il file DAD con un DTD o schema.

v Per convalidare il documento XML composto con un DTD, inserire le tag

DTDID che associano il file DAD con il DTD del documento XML. Ad

esempio:

<dtdid>dtd_name</dtdid>

v Per convalidare il documento XML composto con uno schema, inserire le

tag dello schema che associano il file DAD con il file dello schema. Ad

esempio:

<schemabindings>

<nonamespacelocation location="path/schema_name.xsd"/>

</schemabindings>

Il DTD o lo schema sono utili solo se si decide di convalidare il documento

XML. Utilizzare la tag di convalida per indicare se DB2 XML Extender

convalida il documento XML:

v Se si desidera convalidare il documento XML, allora digitare:

<validation>YES</validation>

v Se non si desidera convalidare il tipo del documento XML:

<validation>NO</validation>

4. Digitare le tag <XCollection> </XCollection> per specificare che si stanno

utilizzando le raccolte XML come metodo di accesso e memorizzazione per i

relativi dati XML.

5. All’interno delle tag <Xcollection> </Xcollection>, inserire le tag <SQL_stmt>

</SQL_stmt> per specificare l’istruzione SQL che assocerà i dati relazionali ai

documenti XML. Questa istruzione viene utilizzata per effettuare una query

dei dati dalle tabelle del database DB2. Il seguente esempio mostra un

esempio di query SQL:

Capitolo 2. Amministrazione 59

Page 70: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<SQL_stmt>

SELECT o.order_key, customer_name, customer_email, p.part_key, color,

quantity, price, tax, ship_id, date, mode from order_tab o, part_tab p,

table (select substr(char(timestamp(generate_unique())),16)

as ship_id, date, mode, part_key from ship_tab) s

WHERE o.order_key = 1 and

p.price > 20000 and

p.order_key = o.order_key and

s.part_key = p.part_key

ORDER BY order_key, part_key, ship_id

</SQL_stmt>

L’istruzione SQL di esempio per associare i dati relazionali al documento XML

soddisfa i seguenti requisiti:

v Le colonne vengono specificate in un ordine decrescente dalla gerarchia

della struttura del documento XML.

v Le colonne per un’entità vengono raggruppate insieme.

v La colonna ID dell’oggetto è la prima colonna in ciascun gruppo.

v La tabella Order_tab non presenta una colonna chiave singola e perciò, la

funzione integrata del database DB2 generate_unique viene utilizzata per

generare la colonna ship_id.

v Nella clausola ORDER BY, le colonne ID dell’oggetto sono elencate

nell’ordine corrispondente alla gerarchia decrescente delle tabelle a cui

appartengono. Le colonne ORDER BY possono non essere qualificate da

alcuno schema ed è necessario che i nomi della colonna corrispondano ai

nomi della colonna nella clausola SELECT. 6. Aggiungere le seguenti informazioni del prologo da utilizzare nel documento

XML composto. Se si desidera specificare un valore di codifica per

l’internazionalizzazione, aggiungere l’attributo ENCODING e il valore.

<prolog>?xml version="1.0"?</prolog>

7. Digitare la tag <doctype> </doctype>. Tale tag contiene la dichiarazione

DOCTYPE da inserire in ogni documento composto. Ad esempio:

<doctype>! DOCTYPE Order SYSTEM "install_dxx

/samples/extenders/db2xml/dtd/getstart.dtd"</doctype>

8. Specificare l’elemento root e gli elementi e gli attributi che determinano il

documento XML:

a. Aggiungere la tag <root></root_node> per definire l’elemento root. Tutti

gli elementi e gli attributi che determinano il documento XML sono

specificati in root_node.

b. Utilizzare le tag <element_node>, <attribute_node>, <text_node> e

<column> per specificare il nome degli elementi e degli attributi nel

documento composto e per associarli alle colonne specificate nell’istruzione

SQL.

<element_node> tag

Specifica gli elementi nel documento XML. Impostare l’attributo

del nome della tag element_node per il nome dell’elemento. Ogni

element_node può avere element_nodes secondari.

<attribute_node> tag

Specifica gli attributi di un elemento nel documento XML. Una tag

<attribute_node> è un elemento secondario di <element_node>.

Impostare l’attributo del nome della tag attribute_node per il nome

dell’attributo.

<text_node> tag

Specifica il contenuto del testo dell’elemento e i dati della colonna

60 XML Extender - Amministrazione e programmazione

Page 71: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

in una tabella relazionale per element_nodes di livello inferiore.

Per ogni elemento di livello inferiore, specificare le tag

<text_node> che indicano che l’elemento contiene dati carattere da

estrarre dal DB2 quando il documento viene composto. Per ogni

element_node di livello inferiore, utilizzare una tag <column> per

specificare da quale colonna estrarre i dati quando il documento

XML viene composto. Le tag della colonna si trovano in genere

all’interno delle tag <attribute_node> o <text_node>. E’ necessario

che tutti i nomi della colonna definiti siano nella clausola

<SQL_stmt> SELECT all’inizio del file DAD.

<column> tag

Specifica la colonna da cui i dati vengono richiamati per l’elemento

o il valore dell’attributo. 9. Assicurarsi che le tag di chiusura siano nei posti appropriati:

a. Assicurarsi che un tag di chiusura </root_node> sia presente dopo

l’ultima tag </element_node>.

b. Assicurarsi che una tag di chiusura </Xcollection> sia presente dopo la

tag </root_node>.

c. Assicurarsi che una tag di chiusura </DAD> sia presente dopo la tag

</Xcollection>.10. Salvare il file come file.dad. Dove file è il nome del proprio file.

Il seguente esempio Windows mostra un file DAD completo:

<?xml version’"1.0"?>

<!DOCTYPE DAD SYSTEM "C:\dxx_xml\test\dtd\dad.dtd">

<DAD>

<validation>NO</validation>

<Xcollection>

<SQL_stmt> select o.order_key, customer_name, customer_email,

p.part_key, color, qty, price, tax, ship_id, date, mode from order_tab o,

part_tab p, (select timestamp(generate_unique()) as

ship_id, date, mode, part_key from ship_tab) s where

o.order_key = 1 and p.price . 20000 and p.order_key

= o.order_key and s.part_key =p.part_key ORDER BY order_key,

part_key, ship_id</SQL_stmt>

<prolog>?XML version="1.0"?</prolog>

<doctype>!DOCTYPE ORDER SYSTEM

"C:\install_dxx\samples\extenders\db2xml\dtd/Order.dtd"

</doctype>

<root_node>

<element_node name="Order">

<attribute_node name="key">

<column name="order_key"/>

</attribute_node>

<element_node name="Customer">

<element_node name="NAME">

<text_node><column name="customer_name"/></text_node>

</element_node>

</element_node>

<element_node name="Part">

<attribute_node name="color">

<column name="color"/>

</attribute_node>

<element_node name="key">

<text_node><column name="part_key"/></text_node>

</element_node>

<element_node name ="Quantity">

<text_node><column name="qty"/></text_node>

</element_node>

<element_node name="ExtendedPrice">

Capitolo 2. Amministrazione 61

Page 72: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<text_node><column name="price"/></text_node>

</element_node>

<element_node name="Tax">

<text_node><column name="tax"/></text_node>

</element_node>

<element_node name="Shipment" multi_occurrence="YES">

<element_node name=shipDate">

<text_node><column name="date"/><text_node>

<element_node>

<element_node name="ShipMode">

<text_node><column name="mode"/></text_node>

</element_node>

</element_node>

</element_node>

</element_node>

</root_node>

</Xcollection>

</DAD>

Richiamare la procedura memorizzata dxxGenXML per comporre utilizzando il file

DAD. Per ulteriori informazioni su tests2x, fare riferimento a “Sovrascrittura

dinamica di valori nel file DAD” a pagina 175.

Composizione di raccolte XML utilizzando l’associazione RDB_node

È necessario prima creare un file DAD e quindi comporre la raccolta XML

utilizzando tale file. Utilizzare l’elemento <RDB_node> per specificare le tabelle di

database DB2, le colonne e le condizioni per un nodo di elementi o di attributi.

L’elemento <RDB_node> utilizza i seguenti elementi:

table Definisce la tabella che corrisponde all’elemento.

column Definisce la colonna che contiene l’elemento corrispondente.

condition Specifica facoltativamente una condizione per cui si verifica

un’intersezione sulla colonna.

Gli elementi secondari che sono utilizzati nell’elemento RDB_node dipendono dal

contesto del nodo e utilizzano le seguenti regole:

Se il tipo di nodo è: Sono utilizzati i seguenti elementi secondari di RDB:

Tabella Colonna Condizione

Elemento root Sì No Sì1

Attributo Sì Sì Facoltativo

Testo Sì Sì Facoltativo

1 Richiesto per visualizzare le relazioni tra più tabelle.

Limitazione: se si compongono le raccolte XML utilizzando associazioni

RDB_node, tutte le istruzioni di un determinato elemento devono essere associate a

colonne nella stessa tabella.

Procedura:

Per preparare un file DAD da utilizzare per la decomposizione di un documento

XML mediante l’associazione RDB_node:

1. Iniziare con un file XML che includa i seguenti elementi:

62 XML Extender - Amministrazione e programmazione

Page 73: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v La seguente intestazione, dove path/dad.dtd è il nome e il percorso del file

DTD per la DAD:

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "path/dad.dtd">

v Le tag <DAD></DAD>. Questo elemento conterrà tutti gli altri elementi.2. Inserire le tag utilizzate per la convalida del file DAD con una DTD o

unoschema:

v Per convalidare il documento XML con una DTD, inserire la tag dtdid che

associa il file DAD con la DTD del documento XML. Ad esempio:

<dtdid>dtd_name</dtdid>

v Per convalidare il documento XML con uno schema, inserire la tag

schemabindings che associa il file DAD al file dello schema. Ad esempio:

<schemabindings>

<nonamespacelocation location="path/schema_name.xsd"/>

</schemabindings>

Il dtdid o lo schema è utile solo se si decide di convalidare il documento XML.

Utilizzare la tag di convalida per indicare se DB2 XML Extender convalida il

documento XML:

v Se si desidera convalidare il documento XML, allora digitare:

<validation>YES</validation>

v Se non si desidera convalidare il tipo del documento XML:

<validation>NO</validation>

3. Inserire le tag <XCollection> </XCollection> per specificare che si utilizzano

raccolte XML come metodo di accesso e memorizzazione per i dati XML.

4. Aggiungere le seguenti informazioni al prologo. Se si desidera specificare un

valore di codifica per l’internazionalizzazione, aggiungere l’attributo

ENCODING e il valore.

<prolog>?xml version="1.0"?</prolog>

5. Add the <doctype></doctype> tag. Ad esempio:

<doctype>! DOCTYPE Order SYSTEM "install_dxx

/samples/extenders/db2xml/dtd/getstart.dtd"</doctype>

6. Definire l’elemento root_node utilizzando le tag <root_node> </root_node>.

7. All’interno di root_node, associare gli elementi e gli attributi nel documento

XML ai nodi di elementi e di attributi che corrispondono ai dati del database

DB2. Tali nodi forniscono un percorso dai dati XML ai dati del database DB2.

a. Definire un livello superiore, l’elemento root element_node. Questo

elemento element_node contiene:

v Elementi di tabella con una condizione join per specificare la raccolta

v Elementi secondari

v Attributi

Per specificare la tabella e la condizione:

1) Creare un elemento RDB_node all’interno di un elemento element_node.

Ad esempio:

<element_node name="name">

<RDB_node>

</RDB_node>

</element_node>

2) Definire un elemento <table> per ogni tabella che contiene i dati da

includere nel documento XML. Ad esempio, se sono presenti tre tabelle,

Capitolo 2. Amministrazione 63

Page 74: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

ORDER_TAB, PART_TAB e SHIP_TAB, che hanno dati di colonne che

devono essere inseriti nel documento, creare un nodo di tabella per

ognuna di esse. Ad esempio:

<RDB_node>

<table name="ORDER_TAB">

<table name="PART_TAB">

<table name="SHIP_TAB">

</RDB_node>

3) Definire una condizione join per le tabelle nella raccolta. La sintassi è:

nome_tabella.colonna_tabella = nome_tabella.colonna_tabella AND

nome_tabella.colonna_tabella = nome_tabella.colonna_tabella ...

Ad esempio:

<RDB_node>

<table name="ORDER_TAB">

<table name="PART_TAB">

<table name="SHIP_TAB">

<condition>

order_tab.order_key = part_tab.order_key AND

part_tab.part_key = ship_tab.part_key

</condition>

</RDB_node>

4) Facoltativo: specificare una chiave primaria per ogni tabella. La chiave

primaria ècostituita da una o più colonne, e in quest’ultimo caso è detta

chiave composta. Per specificare la chiave primaria, aggiungere un

attributo key all’elemento della tabella di RDB_node. Il seguente

esempio definisce una chiave primaria per ogni tabella nell’elemento

RDB_node dell’elemento root element_node Order:

<element_node name="Order">

<RDB_node>

<table name="order_tab" key="order_key"/>

<table name="part_tab" key="part_key price"/>

<table name="ship_tab" key="date mode"/>

<condition>

order_tab.order_key = part_tab.order_key AND

part_tab.part_key = ship_tab.part_key

</condition>

<RDB_node>

L’attributo key è richiesto per la decomposizione e per l’abilitazione di

una raccolta.b. Definire una tag <element_node> per ogni elemento nel documento XML che

viene associato a una colonna in una tabella del database DB2. Ad esempio:

<element_node name="name">

</element_node>

Un nodo di elementi può avere uno dei seguenti tipi di elementi:

text_node Per specificare che un elemento ha un contenuto per una

tabella DB2 e non ha elementi secondari.

attribute_node

Per specificare un attributo.

child elements

Gli elementi secondari di element_node.

L’elemento text_node contiene l’elemento RDB_node per associare il

contenuto a una tabella e a una colonna del database DB2.

Ad esempio, per utilizzare il contenuto di una colonna denominata TAX per

creare un elemento XML, <tax>.

64 XML Extender - Amministrazione e programmazione

Page 75: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Documento XML:

<Tax>0.02</Tax>

In questo caso, il valore 0.02 deve essere utilizzato nella colonna TAX.

Nel file DAD, viene specificata una tag <RDB_node> per associare

l’elemento XML alla tabella e alla colonna del database DB2.

File DAD:

<element_node name="Tax">

<text_node>

<RDB_node>

<table name="part_tab"/>

<column name="tax"/>

</RDB_node>

</text_node>

</element_node>

La tag <RDB_node> specifica che un valore dell’elemento Tax è un valore di

testo e che i dati vengono memorizzati nella tabella PART_TAB nella

colonna TAX.

c. Definire una tag <attribute_node> per ogni elemento nel documento XML

che viene associato a una colonna in una tabella del database DB2. Ad

esempio:

<attribute_node name="key">

</attribute_node>

L’elemento attribute_node contiene l’elemento RDB_node per associare il

valore dell’attributo a una tabella e a una colonna del database DB2.

Ad esempio, è possibile avere un attributo key per un elemento <Order>. Il

valore key deve essere utilizzato da una colonna PART_KEY. Il documento

XML avrà il seguente aspetto:

<Order key="1">

Documento XML: nel file DAD, creare un elemento attribute_node per key

e indicare la tabella in cui deve essere utilizzato il valore 1.

File DAD:

<attribute_node name="key">

<RDB_node>

<table name="part_tab">

<column name="part_key"/>

<RDB_node>

</attribute_node>

8. Facoltativo: specificare il tipo di colonna per l’elemento RDB_node per ogni

elemento attribute_node e text_node. In questo modo, è possibile utilizzare il

file DAD sia per la composizione che per la decomposizione. Nella

composizione, la specifica del tipo di colonna non causa alcun altro controllo

del tipo di dati. Per specificare i tipi di colonne, aggiungere il tipo di attributo

all’elemento della colonna. Il seguente esempio definisce il tipo di colonna

come INTEGER:

<attribute_node name="key">

<RDB_node>

<table name="order_tab"/>

<column name="order_key" type="integer"/>

</RDB_node>

</attribute_node>

9. Assicurarsi che le tag di chiusura siano nei posti appropriati:

a. Assicurarsi che un tag di chiusura </root_node> sia presente dopo l’ultima

tag </element_node>.

Capitolo 2. Amministrazione 65

Page 76: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

b. Assicurarsi che una tag di chiusura </Xcollection> sia presente dopo la tag

</root_node>.

c. Assicurarsi che una tag di chiusura </DAD> sia presente dopo la tag

</Xcollection>.

Richiamare la procedura memorizzata dxxGenXML per comporre utilizzando il file

DAD. Per informazioni su dxxGenXML, fare riferimento a “Procedura

memorizzata dxxGenXML()” a pagina 191.

Argomenti correlati:

v “Schemi di associazione per raccolte XML” a pagina 101

v “Requisiti per l’associazione RDB_Node” a pagina 106

v “Percorsi di posizioni” a pagina 110

v “File DAD per le raccolte XML” a pagina 167

v “Procedure memorizzate di composizione di XML Extender - Panoramica” a

pagina 191

Attività correlate:

v “Decomposizione di una raccolta XML utilizzando l’associazione RDB_node”

v “Gestione di dati in raccolte XML” a pagina 90

v “Aggiornamento ed eliminazione di dati in raccolte XML” a pagina 98

Decomposizione di una raccolta XML utilizzando l’associazione

RDB_node

È necessario prima creare un file DAD. Utilizzare l’elemento <RDB_node> per

specificare le tabelle di database DB2, le colonne e le condizioni per un nodo di

elementi o di attributi. L’elemento <RDB_node> utilizza i seguenti elementi:

table Definisce la tabella che corrisponde all’elemento.

column Definisce la colonna che contiene l’elemento corrispondente.

condition Specifica facoltativamente una condizione per cui si verifica

un’intersezione sulla colonna.

Gli elementi secondari che sono utilizzati nell’elemento <RDB_node> dipendono

dal contesto del nodo e utilizzano le seguenti regole:

Se il tipo di nodo è: Elemento secondario RDB utilizzato:

Tabella Colonna Condizione

Elemento root Sì No Sì1

Attributo Sì Sì facoltativo

Testo Sì Sì facoltativo

1 Richiesto per visualizzare le relazioni tra più tabelle.

Procedura:

Per preparare un file DAD da utilizzare per la decomposizione di un documento

XML mediante l’associazione RDB_node:

66 XML Extender - Amministrazione e programmazione

Page 77: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

1. Creare un file in un editor di testo. Creare un’intestazione DAD immettendo

la seguente sintassi:

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "path/dad.dtd">

dove path/dad.dtd è il nome e il percorso del file DTD per la DAD.

2. Inserire le tag <DAD> </DAD>.

3. Inserire le tag utilizzate per la convalida del file DAD con una DTD o

unoschema.

v Per convalidare il documento XML con una DTD, inserire la tag dtdid che

associa il file DAD con la DTD del documento XML. Ad esempio:

<dtdid>dtd_name</dtdid>

v Per convalidare il documento XML con uno schema, inserire la tag

schemabinding che associa il file DAD al file dello schema. Ad esempio:

<schemabindings>

<nonamespacelocation location="path/schema_name.xsd"/>

</schemabindings>

Il dtdid o lo schema è utile solo se si decide di convalidare il documento

XML. Utilizzare la tag di convalida per indicare se DB2 XML Extender

convalida il documento XML:

v Se si desidera convalidare il documento XML, immettere:

<validation>YES</validation>

v Se non si desidera convalidare il documento XML, immettere:

<validation>NO</validation>

4. Inserire le tag <XCollection> </XCollection> per specificare che si utilizzano

raccolte XML come metodo di accesso e memorizzazione per i dati XML.

5. Aggiungere le seguenti informazioni al prologo. Se è necessario specificare un

valore di codifica per l’internazionalizzazione, aggiungere l’attributo

ENCODING e il relativo valore.

<prolog>?xml version="1.0"?</prolog>

6. Aggiungere le tag <doctype></doctype>. Ad esempio:

<doctype>! DOCTYPE Order SYSTEM "dxx_install

/samples/extenders/db2xml/dtd/getstart.dtd"</doctype>

7. Definire l’elemento root_node utilizzando le tag <root_node> </root_node>.

8. All’interno di root_node, associare gli elementi e gli attributi nel documento

XML ai nodi di elementi e di attributi che corrispondono ai dati del database

DB2. Tali nodi forniscono un percorso dai dati XML ai dati del database DB2.

a. Definire un livello superiore, l’elemento root element_node. Questo

elemento element_node contiene:

v Elementi di tabella con una condizione join per specificare la raccolta

v Elementi secondari

v Attributi

Per specificare la tabella e la condizione:

1) Creare un elemento RDB_node all’interno di un elemento

element_node. Ad esempio:

<element_node name="name">

<RDB_node>

</RDB_node>

</element_node>

2) Definire un elemento <table> per ogni tabella che contiene i dati da

includere nel documento XML. Ad esempio, se sono presenti tre

Capitolo 2. Amministrazione 67

Page 78: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

tabelle, ORDER_TAB, PART_TAB e SHIP_TAB, che hanno dati di

colonne che devono essere inseriti nel documento, creare un nodo di

tabella per ognuna di esse. Ad esempio:

<RDB_node>

<table name="ORDER_TAB">

<table name="PART_TAB">

<table name="SHIP_TAB">

</RDB_node>

3) Definire una condizione join per le tabelle nella raccolta. La sintassi è:

nome_tabella.colonna_tabella = nome_tabella.colonna_tabella AND

nome_tabella.colonna_tabella = nome_tabella.colonna_tabella ...

Ad esempio:

<RDB_node>

<table name="ORDER_TAB">

<table name="PART_TAB">

<table name="SHIP_TAB">

<condition>

order_tab.order_key = part_tab.order_key AND

part_tab.part_key = ship_tab.part_key

</condition>

</RDB_node>

4) Facoltativo: specificare una chiave primaria per ogni tabella. La chiave

primaria ècostituita da una o più colonne, e in quest’ultimo caso è

detta chiave composta. Per specificare la chiave primaria, aggiungere

un attributo key all’elemento della tabella di RDB_node. Il seguente

esempio definisce una chiave primaria per ogni tabella nell’elemento

RDB_node dell’elemento root element_node Order:

<element_node name="Order">

<RDB_node>

<table name="order_tab" key="order_key"/>

<table name="part_tab" key="part_key price"/>

<table name="ship_tab" key="date mode"/>

<condition>

order_tab.order_key = part_tab.order_key AND

part_tab.part_key = ship_tab.part_key

</condition>

<RDB_node>

L’attributo key è richiesto per la decomposizione e per l’abilitazione di

una raccolta.b. Definire una tag <element_node> per ogni elemento nel documento XML

che viene associato a una colonna in una tabella del database DB2. Ad

esempio:

<element_node name="name">

</element_node>

Un nodo di elementi può avere uno dei seguenti tipi di elementi:

text_node Per specificare che un elemento ha un contenuto per una

tabella DB2 e non ha elementi secondari.

attribute_node

Per specificare un attributo.

child elements

Gli elementi secondari di element_node.

L’elemento text_node contiene l’elemento RDB_node per associare il

contenuto a una tabella e a una colonna del database DB2.

68 XML Extender - Amministrazione e programmazione

Page 79: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Ad esempio, è possibile avere un elemento XML <Tax> per cui si desidera

creare il contenuto senza tag in una colonna denominata TAX. Ad

esempio, il documento XML avrà il seguente aspetto:

<Tax>0.02</Tax>

In questo caso, il valore 0.02 deve essere memorizzato nella colonna TAX.

Nel file DAD, viene specificata una tag <RDB_node> per associare un

documento o un attributo XML alla tabella e alla colonna del database

DB2.

DAD file:

<element_node name="Tax">

<text_node>

<RDB_node>

<table name="part_tab"/>

<column name="tax"/>

</RDB_node>

</text_node>

</element_node>

La tag <RDB_node> specifica che un valore dell’elemento Tax è un valore

di testo e che i dati vengono memorizzati nella tabella PART_TAB nella

colonna TAX.

c. Definire una tag <attribute_node> per ogni elemento nel documento XML

che viene associato a una colonna in una tabella del database DB2. Ad

esempio:

<attribute_node name="key">

</attribute_node>

L’elemento attribute_node contiene l’elemento RDB_node per associare il

valore dell’attributo a una tabella e a una colonna del database DB2.

Ad esempio, è possibile avere un attributo key per un elemento Order. Il

valore key deve essere memorizzato in una colonna PART_KEY.

Documento XML:

<Order key="1">

Nel file DAD, creare un elemento attribute_node per key e indicare la

tabella in cui deve essere utilizzato il valore 1.

File DAD:

<attribute_node name="key">

<RDB_node>

<table name="part_tab">

<column name="part_key"/>

<RDB_node>

</attribute_node>

9. Specificare il tipo di colonna per l’elemento RDB_node per ogni elemento

attribute_node e text_node. Ciò garantisce il tipo di dati corretto per ogni

colonna in cui verranno memorizzati dati senza tag. Per specificare i tipi di

colonne, aggiungere il tipo di attributo all’elemento della colonna. Il seguente

esempio definisce il tipo di colonna come INTEGER:

<attribute_node name="key">

<RDB_node>

<table name="order_tab"/>

<column name="order_key" type="integer"/>

</RDB_node>

</attribute_node>

10. Assicurarsi che le tag di chiusura siano nei posti appropriati:

Capitolo 2. Amministrazione 69

Page 80: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

a. Assicurarsi che un tag di chiusura </root_node> sia presente dopo

l’ultima tag </element_node>.

b. Assicurarsi che una tag di chiusura </Xcollection> sia presente dopo la

tag </root_node>.

c. Assicurarsi che una tag di chiusura </DAD> sia presente dopo la tag

</Xcollection>.

Richiamare la procedura memorizzata dxxShredXML da decomporre utilizzando il

file DAD. Per informazioni su dxxShredXML, fare riferimento a “Procedura

memorizzata dxxShredXML()” a pagina 202.

Argomenti correlati:

v “Procedure memorizzate di decomposizione di XML Extender - Panoramica” a

pagina 202

Attività correlate:

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

v “Decomposizione di documenti XML in dati di database DB2” a pagina 94

70 XML Extender - Amministrazione e programmazione

Page 81: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Parte 3. Programmazione

Questa parte descrive le tecniche di programmazione per la gestione dei dati XML.

© Copyright IBM Corp. 1999 - 2006 71

Page 82: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

72 XML Extender - Amministrazione e programmazione

Page 83: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 3. Colonne XML

In questa sezione viene descritto come gestire i dati nelle colonne XML utilizzando

DB2.

Gestione di dati nelle colonne XML

Quando si utilizzano le colonne XML per memorizzare i dati, viene memorizzato

un intero documento XML nel formato nativo come dati di colonne in DB2. Questo

metodo di accesso e memorizzazione consente di lasciare inalterato il documento

XML, consentendo all’utente di indicizzare e ricercare il documento, richiamare i

dati dal documento e aggiornare il documento.

Una volta abilitato un database per XML, è possibile utilizzare i seguenti UDT

(user-defined types) forniti da XML Extender:

XMLCLOB

Utilizzare questo UDT per il contenuto dei documenti XML memorizzato

come CLOB (character large object) in DB2.

XMLVARCHAR

Utilizzare questo UDT per il contenuto dei documenti XML memorizzato

come VARCHAR in DB2.

XMLFILE

Utilizzare questo UDT per un documento XML memorizzato in un file su

un file system locale.

È possibile creare o modificare le tabelle dell’applicazione in modo da avere

colonne del tipo di dati XML UDT. Queste tabelle sono note come tabelle XML.

Dopo aver modificato una colonna in una tabella per XML, è possibile creare la

colonna XML e completare le seguenti attività di gestione:

v Memorizzazione di documenti XML in DB2

v Richiamo di dati o documenti XML da DB2

v Aggiornamento di documenti XML

v Eliminazione di dati o documenti XML

Per eseguire queste attività, utilizzare le UDF (user-defined functions) fornite da

XML Extender. Utilizzare le funzioni di casting predefinite per memorizzare i

documenti XML in DB2. Le funzioni di casting predefinite eseguono il casting del

tipo di base SQL sui tipi definiti dall’utente di XML e converte le istanze del tipo

di dati (origine) nelle istanza di un tipo di dati differente (destinazione).

Argomenti correlati:

v “Uso di indici per i dati delle colonne XML” a pagina 75

v “Colonne XML come metodo di accesso e di memorizzazione” a pagina 74

© Copyright IBM Corp. 1999 - 2006 73

Page 84: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Colonne XML come metodo di accesso e di memorizzazione

A volte è necessario memorizzare e conservare la struttura dei documenti così

come è. XML contiene tutte le informazioni necessarie per creare una serie di

documenti.

Ad esempio, per un’azienda che si occupa di informazione pubblica che fornisce

articoli su Web, potrebbe essere necessario conservare un archivio di tutti gli

articoli pubblicati. In uno scenario del genere, XML Extender consente di

memorizzare gli articoli XML completi o parziali in una colonna di una tabella

DB2®, che è la colonna XML, come riportato in Figura 8.

I metodi di accesso e memorizzazione nelle colonne XML consentono di gestire i

documenti XML utilizzando DB2. È possibile memorizzare i documenti XML in

una colonna di tipo XML ed è possibile interrogare il contenuto del documento per

trovare un determinato elemento o attributo. È possibile associare e memorizzare

un DTD in DB2 per uno o più documenti. Inoltre, è possibile associare il contenuto

di elementi e attributi alle tabelle DB2 dette tabelle laterali. Tali tabelle possono

essere indicizzate in modo da migliorare le prestazioni dell’interrogazione, ma il

processo di indicizzazione non è automatico. La colonna utilizzata per

memorizzare il documento è detta colonna XML. Essa specifica che la colonna è

utilizzata per il metodo di accesso e memorizzazione della colonna XML.

Nel file DAD (document access definition) vengono immesse le tag <Xcolumn> e

</Xcolumn> per indicare che il metodo di accesso e memorizzazione che verrà

utilizzato è la colonna XML. Il file DAD associerà quindi il contenuto dell’elemento

e dell’attributo XML da memorizzare nelle tabelle laterali.

Prima di iniziare a utilizzare XML Extender per memorizzare i documenti, è

necessario comprendere la struttura del documento XML in modo da poter

determinare come indicizzare gli elementi e gli attributi nel documento. Quando si

pianifica il modo in cui indicizzare il documento, è necessario determinare:

v Il tipo definito dall’utente XML in cui verrà memorizzato il documento XML

v Gli elementi e gli attributi XML che verranno ricercati frequentemente

dall’applicazione, in modo che il relativo contenuto possa essere memorizzato in

tabelle laterali e indicizzato per migliorare le prestazioni

v Se convalidare o meno i documenti XML nella colonna con un DTD

Figura 8. Memorizzazione di documenti XML strutturati in una colonna di una tabella DB2

74 XML Extender - Amministrazione e programmazione

Page 85: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Definizione ed abilitazione di una colonna XML

Le colonne XML vengono utilizzate per memorizzare ed accedere tutti i documenti

XML nel database. Tale metodo di memorizzazione consente di memorizzare i

documenti utilizzando i tipi file XML, indicizzare le colonne in tabelle laterali e

effettuare query o ricercare documenti XML.

Utilizzare le colonne XML quando si desidera memorizzare tutti i documenti XML

in una colonna della tabella DB2 se il documento non viene frequentemente

aggiornare o se si desidera memorizzare documenti XML intatti.

Se si desidera associare le strutture del documento XML a tabelle del database DB2

in modo da comporre documenti XML da dati DB2 esistenti o decomporre

documenti XML in dati DB2, allora è necessario utilizzare raccolte XML invece di

colonne XML.

Procedura:

Per definire e abilitare una colonna XML dalla linea di comando:

1. Creare un file DAD (document access definition).

2. Creare una tabella in cui i documenti XML siano memorizzati.

3. Abilitare la colonna per i dati XML.

4. Indicizzare le tabelle laterali.

La colonna XML viene creata come un tipo di dati dell’utente XML. Dopo che

queste attività sono completate, sarà possibile memorizzare i documenti XML nella

colonna. E’ possibile che questi documenti siano aggiornati, ricercati ed estratti.

Argomenti correlati:

v “Lezione: Memorizzazione di un documento XML in una colonna” a pagina 7

v “Uso di indici per i dati delle colonne XML”

v “Convalida automatica dei documenti XML” a pagina 50

v “Colonne XML come metodo di accesso e di memorizzazione” a pagina 74

Attività correlate:

v “Creazione di una tabella XML” a pagina 52

v “Abilitazione di colonne XML” a pagina 53

v “Indicizzazione delle tabelle laterali” a pagina 58

v “Gestione di dati nelle colonne XML” a pagina 73

Uso di indici per i dati delle colonne XML

Un’importante decisione di pianificazione da prendere quando si utilizzano

colonne XML è l’indicizzazione delle tabelle laterali per i documenti delle colonne

XML. Tale decisione deve essere presa in base in base a quanto spesso è necessario

accedere i dati e su quanto critiche siano le prestazioni durante le ricerche

strutturali.

Quando si utilizzano le colonne XML, che contengono interi documenti XML, è

possibile creare le tabelle laterali in modo che contengano le colonne di valori di

elementi e attributi XML e creare quindi gli indici su tali colonne. È necessario

determinare gli elementi e gli attributi necessari per creare l’indice.

Capitolo 3. Colonne XML 75

Page 86: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

L’indicizzazione delle colonne XML consente l’indicizzazione di dati interrogati

frequentemente di tipi di dati generali (come integro, decimale o data) mediante il

supporto di indicizzazione nativa DB2® dal motore di database. XML Extender

estrae i valori di elementi o attributi XML da documenti XML e li memorizza nelle

tabelle laterali, consentendo la creazione di indici sulle tabelle laterali. È possibile

specificare ogni colonna di una tabella laterale con un percorso che identifica un

elemento o un attributo XML e un tipo di dati SQL.

XML Extender inserisce automaticamente i dati nella tabella laterale quando si

memorizzano i documenti XML nella colonna XML.

Per una ricerca rapida, creare gli indici sulle colonne mediante la tecnologia di

indicizzazione B-tree DB2. Fare riferimento alla documentazione DB2 per ulteriori

informazioni sull’indicizzazione B-tree.

Quando si crea un indice, è necessario tenere in considerazione:

v Per gli elementi o gli attributi in un documento XML che ha più ricorrenze, è

necessario creare una tabella laterale separata per ogni elemento o attributo XML

con più ricorrenze, a causa della struttura complessa di documenti XML.

v È possibile creare più indici su una colonna XML.

v È possibile associare le tabelle laterali alla tabella dell’applicazione utilizzando

l’ID ROOT. Suggerimento: utilizzare la chiave primaria della tabella

dell’applicazione come ID ROOT se la chiave primaria non è una chiave

composta.

Se la singola chiave primaria non esiste nella tabella dell’applicazione, o se per

un qualsiasi motivo non si desidera utilizzarla, XML Extender modifica la tabella

dell’applicazione per aggiungere una colonna DXXROOT_ID, che memorizza un

ID univoco creato nel momento dell’inserimento. Tutte le tabelle laterali hanno

una colonna DXXROOT_ID con l’ID univoco. Se la chiave primaria viene

utilizzata come ID ROOT, tutte le tabelle laterali hanno una colonna con lo

stesso nome e tipo della colonna della chiave primaria nella tabella

dell’applicazione e i valori delle chiavi primarie vengono quindi memorizzati.

v Se si abilita una colonna XML per DB2 Net Search Extender, è possibile anche

utilizzare la funzione di testo strutturale di Net Search Extender. Net Search

Extender è dotato di un supporto di ″ricerca di sezione″ che estende la funzione di

una normale ricerca di testo completo consentendo la ricerca di parole che

devono corrispondere all’interno di un determinato contesto del documento

specificato dai percorsi. L’indice di testo strutturale può essere utilizzato con la

funzione di indicizzazione di XML Extender su tipi di dati SQL generali.

Memorizzazione di dati XML

Grazie a XML Extender, è possibile inserire documenti XML in una colonna XML.

Se vengono definite le tabelle laterali, XML Extender aggiorna automaticamente tali

tabelle. Quando si memorizza direttamente un documento XML, XML Extender

memorizza il tipo di base come tipo XML.

Prerequisiti:

v Verificare di aver creato o aggiornato il file DAD.

v Determinare il tipo di dati da utilizzare quando si memorizza il documento.

v Selezionare un metodo (funzioni casting o UDF) per la memorizzazione di dati

nella tabella DB2®.

76 XML Extender - Amministrazione e programmazione

Page 87: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Specificare un’istruzione SQL INSERT che specifichi la colonna e la tabella XML

che deve contenere il documento XML.

XML Extender fornisce due metodi per la memorizzazione di documenti XML: le

funzioni di casting predefinite e le UDF di memorizzazione.

Tabella 7 mostra come utilizzare ogni metodo.

Tabella 7. Funzioni di memorizzazione di XML Extender

Se il tipo di

base del

database

DB2 è...

Memorizzare nel database DB2 come...

XMLVARCHAR XMLCLOB XMLDBCLOB XMLFILE

VARCHAR XMLVARCHAR() N/D N/D XMLFile

FromVarchar()

CLOB N/D XMLCLOB() XMLDB

CLOB,

funzione

casting

XMLFile

FromCLOB()

FILE XMLVarcha

rFromFile()

XMLCLOB

FromFile()

XMLDB

CLOBFrom

File, UDF

XMLFILE

Funzioni casting predefinite per la memorizzazione di dati

XML

Per ogni UDT, esiste una funzione cast predefinita per eseguire il cast del tipo base

SQL per l’UDT. È possibile utilizzare le funzioni di casting fornite da XML

Extender nella clausola VALUES per inserire i dati. Tabella 8 mostra le funzioni di

casting fornita:

Tabella 8. Funzioni di casting predefinite XML Extender

Funzione di casting Tipo di ritorno Descrizione

XMLVARCHAR(VARCHAR) XMLVARCHAR Input dal buffer di memoria

di VARCHAR

XMLCLOB(CLOB) XMLCLOB Input dal buffer di memoria

CLOB o di un locator CLOB

XMLFILE(VARCHAR) XMLFILE Memorizza solo il nome file

Ad esempio, la seguente istruzione inserisce un tipo VARCHAR cast nel tipo

XMLVARCHAR:

EXEC SQL INSERT INTO sales_tab

VALUES(’123456’, ’Sriram Srinivasan’, DB2XML.XMLVarchar(:xml_buff))

UDF di memorizzazione per la memorizzazione di dati XML

Per ognuno degli UTD XML Extender, esiste una UDF di memorizzazione per

importare i dati in un database DB2 da una risorsa diversa dal suo tipo base. Ad

esempio, se si desidera importare un documento di file XML in un database DB2

come tipo di dati XMLCLOB, è possibile utilizzare la funzione

XMLCLOBFromFile().

Tabella 9 a pagina 78 mostra le funzioni di memorizzazione fornite da XML

Extender.

Capitolo 3. Colonne XML 77

Page 88: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 9. UDF di memorizzazione di XML Extender

UDF di memorizzazione Tipo di ritorno Descrizione

XMLVarcharFromFile() XMLVARCHAR Legge un documento XML da

un file sul server e restituisce

il valore del tipo di dati

XMLVARCHAR. Facoltativo:

specificare la codifica del file.

XMLCLOBFromFile() XMLCLOB Legge un documento XML da

un file sul server e restituisce

il valore del tipo di dati

XMLCLOB. Facoltativo:

specificare la codifica del file.

XMLFileFromVarchar() XMLFILE Legge un documento XML

dalla memoria come dati

VARCHAR, scrive il

documento in un file esterno

e restituisce il valore del tipo

di dati XMLFILE, che è il

nome file. Facoltativo:

specificare la codifica del file

esterno.

XMLFileFromCLOB() XMLFILE Legge un documento XML

dalla memoria come dati

CLOB o come locator CLOB,

scrive il documento in un file

esterno e restituisce il valore

del tipo di dati XMLFILE, che

è il nome file. Facoltativo:

specificare la codifica del file

esterno.

Ad esempio, utilizzando la funzione XMLCLOBFromFile(), la seguente istruzione

memorizza un record in una tabella XML come XMLCLOB:

EXEC SQL INSERT INTO sales_tab(ID, NAME, ORDER)

VALUES(’1234’, ’MyName’,

XMLCLOBFromFile(’install_dxx/samples/extenders/db2xml/xml/getstart.xml’))

L’esempio importa il documento XML dal file install_dxx/samples/extenders/db2xml/xml/getstart.xml nella colonna ORDER nella tabella SALES_TAB.

Metodo per richiamare un documento XML

Utilizzando XML Extender, è possibile richiamare un intero documento o il

contenuto di elementi e attributi. Quando si richiama direttamente una colonna

XML, XML Extender restituisce UDT come tipo di colonna. Per dettagli sul

richiamo dei dati, consultare le seguenti sezioni:

v “Richiamo di un interno documento XML” a pagina 79

v “Richiamo dei valori di attributo e del contenuto di un elemento da documenti

XML” a pagina 81

XML Extender fornisce due metodi per il richiamo dei dati: le funzioni di casting

predefinite e un’UDF di carico Content(). Tabella 10 a pagina 79 mostra i casi in cui

utilizzare ogni metodo.

78 XML Extender - Amministrazione e programmazione

Page 89: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 10. Funzioni di richiamo di XML Extender

Quando il tipo XML

è ...

Richiama dal database DB2 con nome ...

VARCHAR CLOB FILE

XMLVARCHAR VARCHAR N/D UDF Content()

XMLCLOB N/D XMLCLOB UDF Content()

XMLFILE N/D UDF Content() FILE

Richiamo di un interno documento XML

Procedura:

Per richiamare un intero documento XML:

1. Verificare di avere memorizzato il documento XML in una tabella XML e

determinare i dati che si desidera richiamare.

2. Selezionare un metodo (funzioni di casting o UDF) per il richiamo dei dati

nella tabella database DB2.

3. Se si utilizza l’UDF di carico Content(), determinare il tipo di dati richiamati e

da esportare.

4. La colonna XML da cui estrarre l’elemento o l’attributo deve essere definita

come tipo di dati XMLVARCHAR, XMLCLOB as LOCATOR o XMLFILE.

Specificare una query SQL che specifichi la tabella XML e una colonna da cui

richiamare il documento XML.

Funzioni di casting predefinite per il richiamo dei dati XML

La funzione di casting predefinita fornita dal database DB2 per UDT converte un

UDT XML in un tipo base SQL e quindi esegue operazioni su tale tipo.

Nell’istruzione SELECT, è possibile utilizzare le funzioni di casting fornite da XML

Extender per richiamare i dati. Tabella 11 mostra le funzioni di casting fornite.

Tabella 11. Le funzioni di casting predefinite di XML Extender

Casting utilizzato nella

clausola SELECT Tipo di ritorno Descrizione

varchar(XMLVARCHAR) VARCHAR Documento XML in

VARCHAR

clob(XMLCLOB) CLOB Documento XML in CLOB

varchar(XMLFile) VARCHAR Nome file XML in

VARCHAR

Ad esempio, la seguente istruzione SQL richiama l’ordine e la colonna

XMLVARCHAR dalla tabella SALES_TAB, esegue il casting della colonna in

VARCHAR e inoltra la colonna come parametro alla funzione LENGTH. La

funzione LENGTH non accetta un parametro di tipo XMLVARCHAR, che richiede

il casting.

SELECT DB2XML.XMLVarchar(order) from SALES_TAB

Utilizzo dell’UDF Content() per il richiamo dei dati XML

Utilizzare l’UDF Content() per richiamare il contenuto del documento dalla

memoria esterna a quella interna o per esportare il documento dalla memoria

interna a un file esterno, che è un file esterno in un database DB2 sul server di

database DB2.

Capitolo 3. Colonne XML 79

Page 90: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Ad esempio, è possibile scegliere di memorizzare il documento XML come tipo di

dati XMLFILE. Per eseguire operazioni su tale documento in memoria, è possibile

utilizzare l’UDF Content(), che può utilizzare il tipo di dati XMLFILE come input e

restituire un CLOB.

L’UDF Content() UDF esegue due funzioni di richiamo differenti, a seconda del

tipo di dati specificato. Essa può:

v Richiamare un documento dalla memoria esterna e inserirlo in quella interna.

È possibile utilizzare l’UDF Content() per richiamare il documento XML in un

buffer di memoria o in un indicatore di posizione CLOB (una variabile host con un

valore che rappresenta un singolo valore LOB nel server di database) quando il

documento viene memorizzato come file esterno.

Utilizzare la seguente sintassi della funzione, in cui xmlobj è la colonna XML in

cui effettuare la ricerca:

XMLFILE in CLOB:

Content(xmlobj XMLFile)

v Richiamare un documento dalla memoria interna ed esportarlo in un file

esterno.

È possibile utilizzare l’UDF Content() per richiamare un documento XML

memorizzato in un database DB2 come tipo di dati XMLCLOB ed esportarlo in

un file sul file system del server di database. L’UDF Content() restituisce il nome

del file come tipo di dati VARCHAR.

Utilizzare la seguente sintassi della funzione:

Tipo XML in file esterno:

Content(xmlobj XML type, filename varchar(512), targetencoding varchar(100))

Dove:

xmlobj È il nome della colonna XML da cui richiamare il contenuto XML. xmlobj

può essere di tipo XMLVARCHAR o XMLCLOB.

filename

È il nome del file esterno in cui memorizzare i dati XML.

targetencoding

Facoltativo: specifica la codifica del file di output.

Nel seguente esempio, un piccolo segmento del programma C con istruzioni SQL

incorporate (istruzioni SQL codificate all’interno di un programma

dell’applicazione) mostra in che modo un documento XML viene richiamato da un

file in memoria. Questo esempio presuppone che il tipo di dati della colonna

ORDER sia XMLFILE.

EXEC SQL BEGIN DECLARE SECTION;

SQL TYPE IS CLOB_LOCATOR xml_buff;

EXEC SQL END DECLARE SECTION;

EXEC SQL CONNECT TO SALES_DB;

EXEC SQL DECLARE c1 CURSOR FOR

SELECT Content(order) from sales_tab

EXEC SQL OPEN c1;

do {

EXEC SQL FETCH c1 INTO :xml_buff;

if (SQLCODE != 0) {

break;}

else { /* effettuare le azioni necessarie per il doc XML nel buffer */}

}

EXEC SQL CLOSE c1;

EXEC SQL CONNECT RESET;

80 XML Extender - Amministrazione e programmazione

Page 91: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Richiamo dei valori di attributo e del contenuto di un

elemento da documenti XML

È possibile richiamare (estrarre) il contenuto di un elemento o il valore di un

attributo da uno o più documenti XML (ricerca del singolo documento o del

documento di una raccolta). XML Extender fornisce funzioni di estrazione definite

dall’utente, che è possibile specificare nella clausola SQL SELECT per ogni tipo di

dati SQL.

Il richiamo dei valori di attributo e del contenuto di un elemento è utile durante lo

sviluppo delle applicazioni, perché è possibile accedere ai dati XML come dati

relazionali. Ad esempio, è possibile che si disponga di 1000 documenti XML

memorizzati nella colonna ORDER della tabella SALES_TAB. Per richiamare i nomi

di tutti i clienti che hanno ordinato prodotti superiori ai $2500, utilizzare la

seguente istruzione SQL che l’UDF di estrazione nella clausola SELECT:

SELECT extractVarchar(Order, ’/Order/Customer/Name’) from sales_order_view

WHERE price > 2500.00

In questo esempio, l’UDF di estrazione richiama il contenuto dell’elemento

<customer> dalla colonna ORDER e lo memorizza come tipo di dati VARCHAR. Il

percorso è /Order/Customer/Name. Inoltre, il numero di valori restituiti viene ridotto

dall’utilizzo di una clausola WHERE, che specifica che soltanto il contenuto

dell’elemento <customer> con un elemento secondario <ExtendedPrice> ha un

valore superiore a 2500.00.

Tabella 12 a pagina 82 mostra le UDF che è possibile utilizzare per estrarre i valori

di attributo e il contenuto di un elemento, utilizzando la seguente sintassi funzioni

tabella o scalari.

Sintassi:

extract tipodati_richiamato(xmlobj, percorso)

tipodati_richiamato

Il tipo dati restituito dalla funzione di estrazione; può essere uno dei

seguenti tipi:

v INTEGER

v SMALLINT

v DOUBLE

v REAL

v CHAR

v VARCHAR

v CLOB

v DATE

v TIME

v TIMESTAMP

xmlobj Il nome della colonna XML da cui estrarre l’elemento o l’attributo. Questa

colonna deve essere definita come uno dei seguenti tipi definiti dall’utente

XML:

v XMLVARCHAR

v XMLCLOB come LOCATOR

v XMLFILE

Capitolo 3. Colonne XML 81

Page 92: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

percorso

Il percorso dell’elemento o attributo nel documento XML (ad esempio

/Order/Customer/Name).

Limitazione: le UDF di estrazione possono supportare i percorsi che hanno

predicati con attributi, ma non elementi. Ad esempio, è supportato il seguente

predicato:

’/Order/Part[@color="black "]/ExtendedPrice’

Il seguente predicato non è supportato:

’/Order/Part/Shipment/[Shipdate < "11/25/00"]’

Tabella 12 mostra le funzioni di estrazione, sia in formato scalare che tabella.

Tabella 12. Le funzioni di estrazione di XML Extender

Funzione scalare Funzione tabella Nome colonna

restituito (funzione

tabella)

Tipo di ritorno

extractInteger() extractIntegers() returnedInteger INTEGER

extractSmallint() extractSmallints() returnedSmallint SMALLINT

extractDouble() extractDoubles() returnedDouble DOUBLE

extractReal() extractReals() returnedReal REAL

extractChar() extractChars() returnedChar CHAR

extractVarchar() extractVarchars() returnedVarchar VARCHAR

extractCLOB() extractCLOBs() returnedCLOB CLOB

extractDate() extractDates() returnedDate DATE

extractTime() extractTimes() returnedTime TIME

extractTimestamp() extractTimestamps() returnedTimestamp TIMESTAMP

Esempio di funzione scalare: nel seguente esempio, un valore viene inserito con il

valore chiave di attributo 1. Il valore viene estratto come numero intero e

convertito automaticamente in tipo DECIMAL.

CREATE TABLE t1(key decimal(3,2));

INSERT into t1 values

SELECT * from table(DB2XML.extractInteger(DB2XML.XMLFile

(’c:\xml\getstart.xml’), ’/Order/@Key="1"]’));

SELECT * from t1;

Esempio di funzione tabella: nel seguente esempio, ogni valore chiave (@Key) per

l’ordine di vendite viene estratto come INTEGER.

SELECT * from table(DB2XML.extractIntegers(DB2XML.XMLFile

(’c:\install_dxx\samples\extenders\db2xml\xml\getstart.xml’),

’/Order/@Key’)) as x;

Aggiornamento dati XML

Con XML Extender, è possibile aggiornare l’intero documento XML sostituendo i

dati della colonna XML o è possibile aggiornare i valori degli elementi degli

attributi specificati.

Procedura

82 XML Extender - Amministrazione e programmazione

Page 93: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Per aggiornare i dati XML:

1. E’ necessario che il documento XML sia memorizzato in una tabella XML.

2. E’ necessario conoscere quali dati si desidera richiamare.

3. E’ necessario scegliere un metodo per aggiornare i dati nella tabella del

database DB2 (funzioni cast o UDF).

4. Specificare una query SQL che determini la tabella e la colonna XML da

aggiornare.

Aggiornamento di un intero documento XML

E’ possibile aggiornare un documento XML utilizzando una funzione cast

predefinita o utilizzando una memorizzazione UDF.

Aggiornamento con una funzione cast predefinita

Per ogni tipo definito dall’utente (UDT), esiste una funzione cast predefinita per

eseguire il cast del tipo base SQL per l’UDT. E’ possibile utilizzare le funzioni cast

fornite in XML Extender per aggiornare il documento XML.

Ad esempio, la seguente istruzione aggiorna il tipo XMLVARCHAR dal tipo cast

VARCHAR, assumendo che xml_buf è un host variabile che è definito come un

tipo VARCHAR.

EXEC SQL UPDATE sales_tab SET=DB2XML.XMLVarchar(:xml_buff)

Aggiornamento dei documenti XML con una memorizzazione

UDF

Per ognuno degli UTD XML Extender, esiste una UDF di memorizzazione per

importare i dati in un database DB2 da una risorsa diversa dal suo tipo base. È

possibile utilizzare una UDF di memorizzazione per aggiornare l’intero documento

XML sostituendolo.

Il seguente esempio aggiorna l’oggetto XML dal file chiamato install_dxx/samples/extenders/db2xml/xml/getstart.xml alla colonna ORDER nella tabella

SALES_TAB.

AGGIORNARE sales_tab

impostare l’ordine = db2xml.XMLVarcharFromFile(’

install_dxx/samples/extenders/db2xml/xml/getstart.xml

’)

WHERE sales_person = ’MyName’

Aggiornamento di elementi e attributi specifici di un

documento XML

Utilizzare L’UDF Aggiorna per effettuare modifiche specifiche, piuttosto che

aggiornare l’intero documento. Quando si utilizza questo UDF, si specifica il

percorso della posizione dell’elemento o dell’attributo il cui valore sarà sostituito.

Non è necessario modificare il documento XML; XML Extender effettua

automaticamente le modifiche.

Sintassi:

Aggiornare(xmlobj, percorso, valore)

La sintassi presenta i seguenti componenti:

xmlobj Il nome della colonna XML per cui il valore dell’elemento o dell’attributo

deve essere aggiornato.

Capitolo 3. Colonne XML 83

Page 94: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

percorso

Il percorso della posizione dell’elemento o dell’elemento che deve essere

aggiornato.

value Il nuovo valore che deve essere aggiornato.

Ad esempio, la seguente istruzione sostituisce il valore dell’elemento <Customer>

con IBM:

UPDATE sales_tab

set order = db2xml.Update(order, ’/Order/Customer/Name’, ’IBM’)

WHERE sales_person = ’Sriram Srinivasan’

Occorrenze multiple: Quando si specifica un percorso della posizione nell’UDF

Aggiorna, il contenuto di ogni elemento o attributo con un percorso corrispondente

viene aggiornato con il valore fornito. Se un percorso della locazione è presente in

un documento più di una volta, l’UDF Aggiorna sostituisce tutti i valori esistenti

con il valore fornito nel parametro value.

Metodi per la ricerca di documenti XML

La ricerca di dati XML è del tutto simile al richiamo di dati XML: entrambe queste

tecniche richiamano i dati per una modifica, ma eseguono una ricerca utilizzando il

contenuto della clausola WHERE come criterio di richiamo.

XML Extender fornisce diversi metodi per la ricerca di documenti XML

memorizzati in una colonna XML. E’ possibile:

v Eseguire una ricerca nell’intera struttura del documento e restituire i risultati in

base al contenuto degli elementi o ai valori degli attributi.

v Eseguire una ricerca nella vista della colonna XML e nelle relative tabelle laterali.

v Eseguire ricerche direttamente all’interno delle tabelle laterali, per ottenere

migliori prestazioni.

v Eseguire una ricerca utilizzando le UDF di estrazione con le clausole WHERE.

v Utilizzare DB2® Net Search Extender per ricercare dati delle colonne all’interno

del contenuto strutturale per una stringa di testo.

Con XML Extender è possibile utilizzare gli indici per eseguire rapidamente

ricerche nelle colonne delle tabelle laterali. Tali colonne contengono il contenuto

dell’elemento o i valori degli attributi XML estratti dai documenti XML. Ad

esempio, nell’esempio dell’ordine di acquisto, è possibile ricercare tutti gli ordini

che hanno un prezzo esteso maggiore di 2500.00.

Inoltre, è possibile utilizzare Net Search Extender per eseguire ricerche di testo

strutturale o ricerche di testo completo. Ad esempio, è possibile che sia presente

una colonna denominata RESUME che contiene tutti i curriculum in formato XML.

Se si desidera trovare i nomi di tutte le persone che hanno competenze Java™, è

possibile utilizzare DB2 Net Search Extender per ricercare i documenti XML per

tutti i curriculum in cui l’elemento <skill> contiene la stringa di caratteri “JAVA”.

Per ulteriori informazioni, fare riferimento a DB2 Database Extenders: Net Search

Extender Administration and Programming.

La seguente sezione descrive i metodi di ricerca.

v “Ricerca nel documento XML in base alla struttura” a pagina 85

84 XML Extender - Amministrazione e programmazione

Page 95: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Ricerca nel documento XML in base alla struttura

Mediante le funzioni di ricerca di XML Extender, è possibile ricercare dati XML in

una colonna in base alla struttura di documenti (gli elementi e gli attributi nel

documento).

Procedure:

Per ricercare i dati, è possibile:

v Interrogare direttamente le tabelle laterali.

v Utilizzare una vista join.

v Utilizzare UDF di estrazione.

Tali metodi di ricerca sono descritti nei seguenti esempi. La tabella SALES_TAB ha

una colonna XML denominata ORDER. Questa colonna ha tre tabelle laterali,

ORDER_SIDE_TAB, PART_SIDE_TAB e SHIP_SIDE_TAB. Una vista predefinita,

sales_order_view, è stata specificata quando è stata abilitata la colonna ORDER.

Questa vista unisce le tabelle mediante la seguente istruzione CREATE VIEW:

CREATE VIEW sales_order_view(invoice_num, sales_person, order,

order_key, customer, part_key, price, date)

AS

SELECT sales_tab.invoice_num, sales_tab.sales_person, sales_tab.order,

order_side_tab.order_key, order_side_tab.customer,

part_side_tab.part_key, ship_side_tab.date

FROM sales_tab, order_side_tab, part_side_tab, ship_side_tab

WHERE sales_tab.invoice_num = order_side_tab.invoice_num

AND sales_tab.invoice_num = part_side_tab.invoice_num

AND sales_tab.invoice_num = ship_side_tab.invoice_num

Esempio: ricerca mediante una interrogazione diretta sulle

tabelle laterali

L’interrogazione diretta con ricerche delle interrogazioni secondarie fornisce i

migliori risultati per una ricerca strutturale quando le tabelle laterali sono

indicizzate.

Procedura:

È possibile utilizzare una interrogazione o una interrogazione secondaria per

ricercare i dati nelle tabelle laterali.

Ad esempio, la seguente istruzione utilizza una interrogazione e una

interrogazione secondaria per eseguire una ricerca direttamente nella tabella

laterale:

SELECT sales_person from sales_tab

WHERE invoice_num in

(SELECT invoice_num from part_side_tab

WHERE price > 2500.00)

In questo esempio, invoice_num è la chiave primaria nella tabella SALES_TAB.

Esempio: ricerca mediante una vista join

XML Extender può creare una vista predefinita che unisce la tabella

dell’applicazione e le tabelle laterali utilizzando un ID univoco. È possibile

utilizzare questa vista predefinita, o qualsiasi altra vista che unisce una tabella

dell’applicazione alle tabelle laterali, per ricercare dati delle colonne e interrogare

le tabelle laterali. Questo metodo fornisce una singola vista virtuale della tabella

dell’applicazione e delle tabelle laterali. Tuttavia, più tabelle laterali vengono

create, più tempo impiega il completamento dell’interrogazione.

Capitolo 3. Colonne XML 85

Page 96: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Suggerimento: è possibile utilizzare l’ID root, o DXXROOT_ID (creato da XML

Extender), per unire le tabelle quando si crea la propria vista.

Ad esempio, la seguente istruzione ricerca la vista denominata

SALES_ORDER_VIEW e restituisce i valori dalla colonna SALES_PERSON in cui

gli ordini dell’elemento riga hanno un prezzo maggiore di 2500.00.

SELECT sales_person from sales_order_view

WHERE price > 2500.00

Esempio: ricerca mediante le UDF di estrazione

È inoltre possibile utilizzare le UDF di estrazione di XML Extender per ricercare

elementi e attributi quando non sono stati creati indici o tabelle laterali per la

tabella dell’applicazione. L’utilizzo delle UDF di estrazione per la scansione dei

dati XML è un processo costoso e va utilizzato solo con le clausole WHERE che

limitano il numero di documenti XML inclusi nella ricerca.

La seguente istruzione esegue una ricerca con un’UDF di estrazione di XML

Extender:

SELECT sales_person from sales_tab

WHERE extractVarchar(order, ’/Order/Customer/Name’)

like ’%IBM%’

AND invoice_num > 100

In questo esempio, l’UDF di estrazione estrae gli elementi </Order/Customer/Name> che contengono la sottostringa IBM®.

Esempio: ricerca su elementi o attributi con ricorrenza multipla

Quando si ricerca in elementi o attributi che hanno più ricorrenze, utilizzare la

clausola DISTINCT per impedire valori duplicati.

La seguente istruzione esegue una clausola DISTINCT:

SELECT sales_person from sales_tab

WHERE invoice_num in

(SELECT DISTINCT invoice_num from part_side_tab

WHERE price > 2500.00 )

In questo esempio, il file DAD specifica che /Order/Part/Price ha più ricorrenze e

crea una tabella laterale, PART_SIDE_TAB. La tabella PART_SIDE_TAB potrebbe

avere più di una riga con lo stesso invoice_num. L’utilizzo di DISTINCT restituisce

solo valori univoci.

Eliminazione di documenti XML

Utilizzare l’istruzione SQL DELETE per eliminare la riga contenente un documento

XML da una colonna XML. È possibile specificare una clausola WHERE per

eliminare determinati documenti.

Ad esempio, la seguente istruzione elimina tutti i documenti che hanno un valore

per <ExtendedPrice> maggiore di 2500.00:

DELETE from sales_tab

WHERE invoice_num in

(SELECT invoice_num from part_side_tab

WHERE price > 2500.00)

Le righe corrispondenti nelle tabelle laterali vengono eliminate automaticamente.

86 XML Extender - Amministrazione e programmazione

Page 97: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Limitazioni durante l’invocazione delle funzioni da JDBC (Java

Database)

Durante l’utilizzo di indicatori di parametri nelle funzioni, una restrizione JDBC

richiede che l’indicatore del parametro per la funzione sia associato al tipo di dati

della colonna in cui i dati restituiti verranno inseriti. La logica di selezione della

funzione non sa in che tipi di dati può trasformarsi l’argomento e pertanto non

può risolvere il riferimento.

Ad esempio, JDBC non può risolvere il seguente codice:

DB2XML.XMLdefault_casting_function(data_type)

E’ possibile utilizzare la specifica CAST per fornire un tipo per l’indicatore

parametro, ad esempio VARCHAR e quindi la logica di selezione della funzione

può procedere:

DB2XML.XMLdefault_casting_function(CAST(? AS cast_type(length))

Esempi:

Nei seguenti esempi, la tabella Sales_Tab ha tre colonne. La colonna invoice_num

presenta un tipo di dati di Char(6), la colonna sales_person presenta un tipo di

dati di Varchar(20) e la colonna order ha un tipo di dati di XMLVarchar.

Esempio 1: Nel seguente esempio, l’indicatore parametro è definito come

VARCHAR. Il parametro da passare è un documento XML, che è definito come

VARCHAR(1000) e inserito nella colonna ORDER.

String query = "insert into sales_tab(invoice_num, sales_person, order) values

(?,?,DB2XML.XMLVarchar(cast (? as varchar(1000))))";

Esempio 2: Nel seguente esempio, l’indicatore parametro è definito come

VARCHAR. Il parametro da passare è un nome file e i relativi contenuti vengono

convertiti in VARCHAR ed inseriti nella colonna ORDER.

String query = "insert into sales_tab(invoice_num, sales_person, order) values

(?,?,DB2XML.XMLVarcharfromFILE(cast (? as varchar(1000))))";

Capitolo 3. Colonne XML 87

Page 98: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

88 XML Extender - Amministrazione e programmazione

Page 99: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 4. Gestione di dati nelle raccolte XML

Raccolte XML come metodo di accesso e di memorizzazione

I dati relazionali vengono decomposti dai documenti XML in entrata o sono

utilizzati per comporre i documenti XML in uscita. I dati decomposti sono il

contenuto senza tag di un documento XML memorizzato in una o più tabelle del

database. In alternativa, i documenti XML sono composti da dati esistenti in una o

più tabelle di database. Se i dati devono essere condivisi con altre applicazioni,

potrebbe essere necessario comporre e decomporre i documenti XML in entrata e

in uscita e gestire i dati in modo da poter sfruttare le caratteristiche relazionali di

DB2®. Questo tipo di memorizzazione dei documenti XML è detto raccolta XML.

Un esempio di raccolta XML è riportato in Figura 9.

La raccolta XML è definita in un file DAD che specifica il modo in cui gli elementi

e gli attributi sono associati a una o più tabelle relazionali. La raccolta è una serie

di colonne, associate a un file DAD, che contengono i dati in un determinato

documento XML o in una serie di documenti XML. È possibile definire un nome di

raccolta abilitandola e facendo riferimento ad essa in base al nome quando si

emette una procedura memorizzata per comporre o decomporre i documenti XML.

Essa è detta raccolta XML abilitata. Alla raccolta viene assegnato un nome in modo

che possa facilmente essere eseguita con procedure memorizzate che compongono

e decompongono i documenti XML.

Quando si definisce una raccolta nel file DAD, viene utilizzato un tipo di schema

di associazione, l’associazione SQL o l’associazione RDB_node che definisce le tabelle,

le colonne e le condizioni utilizzate per associare i dati XML alle tabelle DB2. Le

associazioni SQL utilizzano le istruzioni SQL SELECT per definire le tabelle DB2 e

le condizioni utilizzate per la raccolta. L’associazione RDB_node utilizza un nodo

di database relazionali basato su XPath, detto RDB_node, che ha elementi

secondari.

Per comporre o decomporre documenti XML, sono fornite delle procedure

memorizzate. I nomi delle procedure memorizzate sono qualificati per DB2XML,

che è il nome schema di XML Extender.

Figura 9. Memorizzazione di documenti come dati senza tag nelle tabelle DB2

© Copyright IBM Corp. 1999 - 2006 89

Page 100: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Gestione di dati in raccolte XML

Una raccolta XML è una serie di tabelle relazionali che contengono dati associati a

documenti XML. Questo metodo di accesso e memorizzazione consente di

comporre un documento XML da dati esistenti, di decomporre un documento XML

e di utilizzare XML come metodo di scambio.

Le tabelle relazionali che costituiscono la raccolta possono essere tabelle nuove o

già esistenti che contengono i dati che devono essere utilizzati con XML Extender

per creare i documenti XML per le proprie applicazioni. I dati delle colonne in

queste tabelle non contengono tag XML; esse contengono il contenuto e i valori

associati rispettivamente a elementi e attributi. È possibile utilizzare le procedure

memorizzate per memorizzare, richiamare, aggiornare, ricercare ed eliminare i dati

della raccolta XML.

Preparazione alla composizione di documenti XML da dati

DB2

La composizione è il processo di creazione di una serie di documenti XML dai dati

relazionali in una raccolta XML. È possibile comporre documenti XML utilizzando

le procedure memorizzate. Per utilizzare tali procedure, è necessario creare un file

DAD (document access definition). Un file DAD specifica l’associazione tra il

documento XML e la struttura di tabelle DB2. Le procedure memorizzate utilizzano

il file DAD per comporre il documento XML.

Procedura::

Prima di cominciare a comporre documenti XML:

1. Associare la struttura del documento XML alle tabelle relazionali che

contengono il contenuto di elementi e i valori degli attributi.

2. Selezionare un metodo di associazione: associazione SQL o associazione

RDB_node.

3. Preparare il file DAD.

XML Extender fornisce quattro procedure memorizzate per creare i documenti

XML:

v dxxGenXML()

v dxxGenXMLCLOB()

v dxxRetrieveXML()

v dxxRetrieveXMLCLOB

Composizione di documenti mediante dxxGenXML

Utilizzare la procedura memorizzata dxxGenXML per creare il documento. Non è

necessario abilitare una raccolta per poter utilizzare questa procedura. Essa utilizza

infatti un file DAD.

La procedura memorizzata dxxGenXML crea documenti XML utilizzando dati che

sono memorizzati nelle tabelle della raccolta XML, specificate dall’elemento

<Xcollection> nel file DAD. Questa procedura memorizzata inserisce ogni

documento come una riga in una tabella di risultati. È possibile aprire un cursore

sulla tabella dei risultati e utilizzare quindi la serie di risultati. La tabella dei

risultati deve essere creata dall’applicazione e ha sempre una colonna di tipo

VARCHAR, CLOB, XMLVARCHAR o XMLCLOB utilizzata per memorizzare i dati

XML.

90 XML Extender - Amministrazione e programmazione

Page 101: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Inoltre, se il valore dell’elemento validation nel file DAD è YES, XML Extender

aggiunge la colonna DXX_VALID di tipo INTEGER alla tabella dei risultati se la

colonna DXX_VALID non è ancora presente nella tabella. XML Extender inserisce

un valore pari a 1 per un documento XML valido e 0 per un documento non

valido.

La procedura memorizzata dxxGenXML consente di specificare il numero massimo

di righe che devono essere generate nel risultato. La specifica del numero massimo

di righe velocizza l’elaborazione. La procedura memorizzata restituisce il numero

reale di righe nella tabella e i codici di ritorno e i messaggi.

La corrispondente procedura per la decomposizione è dxxShredXML; anche questa

utilizza il DAD come parametro di input e non richiede che la raccolta XML sia

abilitata.

Procedura:

Per comporre un documento XML utilizzando la procedura memorizzata

dxxGenXML, integrare una chiamata alla procedura nell’applicazione utilizzando

la seguente dichiarazione:

dxxGenXML(CLOB(100K) DAD, /* input */

char(32 resultTabName) resultTabName, /* input */

integer overrideType, /* input */

varchar(varchar_value) override, /* input */

integer maxRows, /* input */

integer numRows, /* output */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Esempio: il seguente esempio crea un documento XML:

#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; /* file DAD */

char result_tab[32]; /* nome della tabella dei risultati */

char override[2]; /* override, impostata su NULL*/

short overrideType; /* definito in dxx.h */

short max_row; /* numero massimo di righe */

short num_row; /* numero reale di righe */

long returnCode; /* codice ritorno errore */

char returnMsg[1024]; /* testo messaggio errore */

short dad_ind;

short rtab_ind;

short ovtype_ind;

short ov_ind;

short maxrow_ind;

short numrow_ind;

short returnCode_ind;

short returnMsg_ind;

EXEC SQL END DECLARE SECTION;

/* crea la tabella */

EXEC SQL CREATE TABLE xml_order_tab (xmlorder XMLVarchar);

/* legge i dati da un file su un CLOB */

Capitolo 4. Gestione di dati nelle raccolte XML 91

Page 102: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

strcpy(dadfile.name,"install_dxx

/samples/dad/getstart_xcollection.dad");

dadfile.name_length = strlen("install_dxx

/samples/dad/getstart_xcollection.dad");

dadfile.file_options = SQL_FILE_READ;

strcpy(dadfile.name,"install_dxx

/samples/extenders/db2xml/samples/dad/getstart_xcollection.dad");

dadfile.name_length = strlen("install_dxx

/samples/extenders/db2xml/samples/dad/getstart_xcollection.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’;

dad_ind = 0;

rtab_ind = 0;

ov_ind = -1;

ovtype_ind = 0;

maxrow_ind = 0;

numrow_ind = -1;

returnCode_ind = -1;

returnMsg_ind = -1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.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);

Una volta richiamata la procedura memorizzata, la tabella dei risultati conterrà 250

righe in quanto l’interrogazione SQL specificata nel file DAD ha generato 250

documenti XML.

Composizione di documenti mediante dxxRetrieveXML

La procedura memorizzata dxxRetrieveXML opera allo stesso modo della

procedura dxxGenXML, tranne per il fatto che utilizza il nome di una raccolta

XML abilitata invece che un file DAD. Quando una raccolta XML viene abilitata,

un file DAD viene memorizzato nella tabella XML_USAGE. Pertanto, XML

Extender richiama il file DAD e lo utilizza per comporre il documento nello stesso

modo in cui fa la procedura memorizzata dxxGenXML.

La corrispondente procedura per la decomposizione è dxxInsertXML; anche questa

utilizza il nome di una raccolta XML abilitata.

Procedura:

Per comporre un documento XML utilizzando la procedura memorizzata

dxxRetrieveXML, integrare una chiamata alla procedura nell’applicazione

utilizzando la seguente dichiarazione:

dxxRetrieveXML(

varchar(collectionName) collectionName /*input*/

varchar(resultTabName) resultTable /*input*/

92 XML Extender - Amministrazione e programmazione

Page 103: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

varchar(resultColumn) resultColumn /*input*/

varchar(validColumn) validColumn /*input*/

integer overrideType /*input*/

varchar(varchar_value) override /*input*/

integer maxRows /*input*/

integer numRows /*output*/

integer returnCode /*output*/

varchar(1024) returnMsg /*output*/

Esempio: il seguente è un esempio di una chiamata a dxxRetrieveXML(). Si assuma

che sia stata creata una tabella di risultati denominata XML_ORDER_TAB e che la

tabella abbia una colonna di tipo XMLVARCHAR.

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char collection; /* buffer dad */

char result_tab[32]; /* nome della tabella dei risultati */

char override[2]; /* override, impostata su NULL*/

short overrideType; /* definito in dxx.h */

short max_row; /* numero massimo di righe */

short num_row; /* numero reale di righe */

long returnCode; /* codice ritorno errore */

char returnMsg[1024]; /* testo messaggio errore */

short collection_ind;

short rtab_ind;

short ovtype_ind;

short ov_ind;

short maxrow_ind;

short numrow_ind;

short returnCode_ind;

short returnMsg_ind;

EXEC SQL END DECLARE SECTION;

/* crea la tabella */

EXEC SQL CREATE TABLE xml_order_tab (xmlorder XMLVarchar);

/* inizializza la variabile host e gli indicatori */

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;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxRetrieveXML(:collection:collection_ind;

:result_tab:rtab_ind,

:result_colname:rcol_ind,

:valid_colname:vcol_ind,

:overrideType:ovtype_ind,:override:ov_ind,

:max_row:maxrow_ind,:num_row:numrow_ind,

:returnCode:returnCode_ind,:returnMsg:returnMsg_ind);

Capitolo 4. Gestione di dati nelle raccolte XML 93

Page 104: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Argomenti correlati:

v “Procedure memorizzate di composizione di XML Extender - Panoramica” a

pagina 191

v “File DAD per le raccolte XML” a pagina 167

v “Percorsi di posizioni” a pagina 110

v “Schemi di associazione per raccolte XML” a pagina 101

v “Raccolte XML come metodo di accesso e di memorizzazione” a pagina 89

Attività correlate:

v “Composizione di raccolte XML utilizzando l’associazione RDB_node” a pagina

62

v “Decomposizione di una raccolta XML utilizzando l’associazione RDB_node” a

pagina 66

v “Ricerca delle raccolte XML” a pagina 100

v “Fogli di stile per una raccolta XML” a pagina 109

v “Aggiornamento ed eliminazione di dati in raccolte XML” a pagina 98

Decomposizione di documenti XML in dati di database DB2

Per decomporre un documento XML è necessario analizzare i dati all’interno di un

documento XML e memorizzarli in tabelle relazionali. XML Extender fornisce

procedure memorizzate per decomporre i dati XML dai documenti XML di origine

nelle tabell relazionali. Per utilizzare queste procedure memorizzate, è necessario

creare un file DAD che specifichi l’associazione tra il documento XML e una

struttura di tabelle DB2. Le procedure memorizzate utilizzano il file DAD per

decomporre il documento XML.

Prima di decomporre un documento XML in dati di database DB2:

1. Associare la struttura del documento XML alle tabelle relazionali che

contengono il contenuto di elementi e i valori degli attributi.

2. Preparare il file DAD utilizzando l’associazione RDB_node.

3. Facoltativo: abilitare la raccolta XML.

Procedura::

Utilizzare una delle due procedure memorizzate (dxxShredXML() o dxxInsertXML)

fornite da DB2 XML Extender per decomporre i documenti XML.

dxxShredXML()

Questa procedura memorizzata viene utilizzata per le applicazioni che

eseguono occasionalmente degli aggiornamenti o per le applicazioni che

non desiderano un sovraccarico di gestione dei dati XML. La procedura

dxxShredXML() non richiede una raccolta abilitata, ma utilizza un file

DAD.

La procedura dxxShredXML() invece utilizza due parametri di input, un

file DAD e il documento XML che deve essere decomposto, e restituisce

due parametri di output: un codice di ritorno e un messaggio. Essa

inserisce i dati da un documento XML in una raccolta XML in base alla

specifica <Xcollection> nel file DAD di input. La procedura memorizzata

dxxShredXML() quindi decompone il documento XML e inserisce i dati

XML senza tag nelle tabelle specificate nel file DAD. Si assume che le

tabelle utilizzate nell’elemento <Xcollection> del file DAD esistano e che le

94 XML Extender - Amministrazione e programmazione

Page 105: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

colonne corrispondano ai tipi di dati specificati nell’associazione DAD. Se

ciò non è vero, verrà restituito un messaggio di errore.

La corrispondente procedura per la decomposizione è dxxGenXML(); anche

questa utilizza il DAD come parametro di input e non richiede che la

raccolta XML sia abilitata.

Per decomporre una raccolta XML con dxxShredXML()

Integrare una chiamata alla procedura nell’applicazione utilizzando la

seguente dichiarazione della procedura memorizzata:

dxxShredXML(CLOB(100K) DAD, /* input */

CLOB(1M) xmlobj, /* input */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Esempio: il seguente è un esempio di una chiamata a dxxShredXML():

#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; /* file DAD */

SQL TYPE is CLOB(1M) xmlDoc; /* documento XML di input */

SQL TYPE is CLOB_FILE xmlFile; /* file XML di input */

long returnCode; /* codice errore */

char returnMsg[1024]; /* testo messaggio di errore */

short dad_ind;

short xmlDoc_ind;

short returnCode_ind;

short returnMsg_ind;

EXEC SQL END DECLARE SECTION;

/* inizializza la variabile host e gli indicatori */

strcpy(dadFile.name,

"install_dxx/samples/extenders/db2xml/dad/

getstart_xcollection.dad");

dadFile.name_length=strlen("install_dxx

/samples/extenders/db2xml/dad/getstart_xcollection.dad");

dadFile.file_option=SQL_FILE_READ;

strcpy(xmlFile.name,"install_dxx

/samples/extenders/db2xml/xml/getstart_xcollection.xml");

xmlFile.name_length=strlen

("install_dxx/samples/extenders/db2xml/xml

/getstart_xcollection.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;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxShredXML(:dad:dad_ind;

:xmlDoc:xmlDoc_ind,

:returnCode:returnCode_ind,

:returnMsg:returnMsg_ind);

Capitolo 4. Gestione di dati nelle raccolte XML 95

Page 106: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

dxxInsertXML()

Questa procedura memorizzata viene utilizzata per le applicazioni che

eseguono gli aggiornamenti in maniera regolare. La procedura

dxxInsertXML() funziona esattamente come dxxShredXML(), tranne per il

fatto che dxxInsertXML() utilizza la raccolta XML integrata come primo

parametro di input.

La procedura memorizzata dxxInsertXML() inserisce i dati da un

documento XML in una raccolta XML abilitata, associata a un file DAD. Il

file DAD contiene le specifiche per le tabelle di raccolta e l’associazione. Le

tabelle di raccolta vengono controllate o create in base alle specifiche

nell’elemento <Xcollection>. La procedura memorizzata dxxInsertXML()

quindi decompone il documento XML in base all’associazione e inserisce i

dati XML senza tag nelle tabelle della raccolta XML specificata.

La corrispondente procedura per la decomposizione è dxxRetrieveXML();

anche questa utilizza il nome di una raccolta XML abilitata.

Procedura:

Per decomporre una raccolta XML: dxxInsertXML():

Integrare una chiamata alla procedura nell’applicazione utilizzando la

seguente dichiarazione della procedura memorizzata:

dxxInsertXML(char(

) collectionName, /* input */

CLOB(1M) xmlobj, /* input */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Esempio: il seguente è un esempio di una chiamata a dxxInsertXML():

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char collection[64]; /* nome della raccolta XML */

SQL TYPE is CLOB_FILE xmlFile; /* file XML di input */

SQL TYPE is CLOB(1M) xmlDoc; /* doc XML di input */

long returnCode; /* codice errore */

char returnMsg[1024]; /* testo messaggio di errore */

short collection_ind;

short xmlDoc_ind;

short returnCode_ind;

short returnMsg_ind;

EXEC SQL END DECLARE SECTION;

/* inizializza la variabile host e gli indicatori */

strcpy(collection,"sales_ord")strcpy

(xmlobj.name,"install_dxx/samples/extenders/db2xml

/xml/getstart_xcollection.xml");

xmlobj.name_length=strlen("install_dxx/samples/extenders/db2xml

/xml/getstart_xcollection.xml");

xmlobj.file_option=SQL_FILE_READ;

SQL EXEC VALUES (:xmlFile) INTO (:xmlDoc);

returnCode = 0;

returnMsg[0] = ’\0’;

collection_ind = 0;

xmlobj_ind = 0;

returnCode_ind = -1;

returnMsg_ind = -1;

/* Richiama la procedura memorizzata */

96 XML Extender - Amministrazione e programmazione

Page 107: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

EXEC SQL CALL DB2XML.dxxInsertXML

(:collection:collection_ind;

:xmlDoc:xmlDoc_ind,

:returnCode:returnCode_ind,:returnMsg:returnMsg_ind);

Abilitazione di una raccolta XML per la decomposizione

Nella maggior parte dei casi, prima di poter utilizzare le procedure memorizzate è

necessario abilitare una raccolta XML. I casi in cui tale abilitazione è necessaria

sono:

v Quando vengono decomposti documenti XML in nuove tabelle, una raccolta

XML deve essere abilitata in quanto tutte le tabelle nella raccolta XML vengono

create da XML Extender una volta abilitata la raccolta.

v Quando si conserva la sequenza di elementi e attributi che hanno più ricorrenze.

XML Extender conserva solo l’ordine di sequenza degli elementi e degli attributi

con più ricorrenze per le tabelle che vengono create quando viene abilitata una

raccolta. Quando i documenti XML vengono decomposti in tabelle relazionali

esistenti, non è garantito che l’ordine della sequenza venga conservato.

Fare riferimento alla sezione relativa al comando di gestione dxxadm per

informazioni sull’opzione enable_collection.

Se si desidera inviare il file DAD quando le tabelle sono già presenti nel database,

non è necessario abilitare una raccolta XML.

Limiti di dimensione delle tabelle di decomposizione

La decomposizione utilizza l’associazione RDB_node per specificare il modo in cui

un documento XML viene decomposto in tabelle di database DB2 estraendo i

valori di elementi e attributi e memorizzandoli nelle righe delle tabelle. I valori di

ogni documento XML vengono memorizzati in una o più tabelle di database DB2.

Ogni tabella può contenere un massimo di 10240 righe decomposte da ogni

documento.

Ad esempio, se un documento XML viene decomposto in cinque tabelle, ognuna di

queste potrà avere un massimo di 10240 righe per quel documento particolare.

L’utilizzo di elementi a più ricorrenze (elementi con percorsi delle posizioni che

possono essere presenti più di una volta nella struttura XML) influenza il numero

di righe. Ad esempio, un documento che contiene un elemento <Part> presente 20

volte può essere decomposto come 20 righe in una tabella. Quando si utilizzano

elementi a più ricorrenze, tenere presente che è possibile decomporre un numero

massimo di 10240 righe in una tabella da un singolo documento.

Argomenti correlati:

v “Procedure memorizzate di decomposizione di XML Extender - Panoramica” a

pagina 202

Attività correlate:

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

v “Decomposizione di una raccolta XML utilizzando l’associazione RDB_node” a

pagina 66

Riferimenti correlati:

v “Procedura memorizzata dxxInsertXML()” a pagina 203

v “Procedura memorizzata dxxShredXML()” a pagina 202

Capitolo 4. Gestione di dati nelle raccolte XML 97

Page 108: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Aggiornamento ed eliminazione di dati in raccolte XML

È possibile aggiornare, eliminare, ricercare e richiamare raccolte XML. Tuttavia, lo

scopo di utilizzare una raccolta XML è memorizzare o richiamare dati senza tag in

tabelle di database. I dati nelle tabelle di database esistenti non hanno nulla a che

fare con i documenti XML in entrata; le operazioni di aggiornamento, eliminazione

e ricerca sono costituite da un normale accesso SQL a queste tabelle.

XML Extender consente di eseguire operazioni sui dati da una vista di raccolte

XML. È possibile eseguire le istruzioni SQL UPDATE e DELETE per modificare i

dati utilizzati per comporre i documenti XML e pertanto aggiornare la raccolta

XML. L’esecuzione di operazioni SQL sulle tabelle di raccolta influenza i

documenti generati.

v Per aggiornare un documento, non eliminare la riga contenente la chiave

primaria della tabella, ovvero la riga della chiave esterna delle altre tabelle di

raccolta. Quando la riga della chiave primaria e della chiave esterna viene

eliminata, viene eliminato anche il documento.

v Per sostituire o eliminare valori di elementi ed attributi, è possibile eliminare e

inserire righe nelle tabelle di livello inferiore senza eliminare il documento.

v Per eliminare un documento, eliminare la riga che costituisce l’elemento

element_node superiore specificato nel file DAD.

Aggiornamento di dati in una raccolta XML

XML Extender consente di aggiornare i dati senza tag memorizzati nelle tabelle di

raccolta XML. Aggiornando i valori delle tabelle di raccolta XML, si aggiorna il

testo di un elemento XML o il valore di un attributo XML. Gli aggiornamenti

possono eliminare anche un’istanza di dati da elementi o attributi ricorrenti.

Da un punto di vista SQL, la modifica del valore dell’elemento o dell’attributo è

un’operazione di aggiornamento e l’eliminazione di un’istanza di un elemento o di

un attributo è un’operazione di eliminazione. Da un punto di vista XML, se è

presente il testo dell’elemento o il valore dell’attributo dell’elemento root

element_node, il documento XML sarà ancora presente e pertanto questa sarà

un’operazione di aggiornamento. Le operazioni SQL sulle tabelle di raccolta

influenzano i documenti che verranno generati dalle tabelle.

Requisiti: quando si aggiornano i dati in una raccolta XML, osser vare le seguenti

regole:

v Specificare la relazione tra chiave primaria e chiave esterna tra le tabelle di

raccolta quando le tabelle esistenti hanno questa relazione. In caso contrario,

verificare che le colonne possano essere unite.

v Includere la condizione join specificata nel file DAD:

– Per l’associazione SQL, includere la condizione join nell’elemento

<SQL_stmt>.

– Per l’associazione RDB_node, includere la condizione join nell’elemento

<condition> superiore del nodo di elementi root.

Aggiornamento di elementi e di valori di attributi

In una raccolta XML, il testo degli elementi e il valore di attributi sono associati

alle colonne nelle tabelle di database. Indipendentemente se i dati della colonna

erano già presenti o se sono decomposti da documenti XML in entrata, è possibile

sostituire i dati utilizzando la normale tecnica di aggiornamento SQL.

98 XML Extender - Amministrazione e programmazione

Page 109: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Per aggiornare un elemento o il valore di un attributo, specificare una clausola

WHERE nell’istruzione SQL UPDATE che contiene la condizione join specificata

nel file DAD.

Esempio:

UPDATE SHIP_TAB

set MODE = ’BOAT’

WHERE MODE=’AIR’ AND PART_KEY in

(SELECT PART_KEY from PART_TAB WHERE ORDER_KEY=68)

Il valore dell’elemento <ShipMode> viene aggiornato da AIR a BOAT nella tabella

SHIP_TAB, dove la chiave è 68.

Eliminazione di istanze di elementi e attributi

Per aggiornare i documenti XML composti eliminando elementi o attributi

ricorrenti più volte, eliminare una riga contenente il valore del campo che

corrisponde al valore dell’elemento o dell’attributo utilizzando la clausola WHERE.

Se non si elimina la riga contenente i valori dell’elemento superiore element_node,

l’eliminazione dei valori dell’elemento verrà considerato semplicemente un

aggiornamento del documento XML.

Ad esempio, nella seguente istruzione DELETE, viene eliminato un elemento

<shipment> specificando un valore univoco di uno degli elementi secondari.

DELETE from SHIP_TAB

WHERE DATE=’1999-04-12’

La specifica del valore DATE elimina la riga che corrisponde a questo valore. Il

documento composto originariamente conteneva due elementi <shipment>, ma

adesso ne contiene uno solo.

Eliminazione di un documento XML da una raccolta XML

È possibile eliminare un documento XML composto da una raccolta. Ciò significa

che se si ha una raccolta XML costituita da più documenti XML, è possibile

eliminarne uno. L’esecuzione di operazioni SQL sulle tabelle di raccolta influenza i

documenti generati.

Procedura:

Per eliminare un documento, eliminare una riga nella tabella che costituisce

l’elemento superiore element_node specificato nel file DAD. Questa tabella

contiene la chiave primaria per la tabella di raccolta di livello superiore e la chiave

esterna per le tabelle di livello inferiore. L’eliminazione del documento con questo

metodo funziona solo se le limitazioni di chiave primaria e chiave esterna sono

specificate in SQL e se la relazione delle tabelle riportate nel file DAD corrisponde

esattamente a tali limitazioni.

Esempio:

La seguente istruzione DELETE specifica il valore della colonna della chiave

primaria.

DELETE from order_tab

WHERE order_key=1

ORDER_KEY è la chiave primaria nella tabella ORDER_TAB, che è la tabella di

livello superiore come specificato nel file DAD. L’eliminazione di questa riga

Capitolo 4. Gestione di dati nelle raccolte XML 99

Page 110: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

elimina un documento XML generato durante la composizione. Pertanto, dal punto

di vista XML, un documento XML viene eliminato dalla raccolta XML.

Ricerca delle raccolte XML

Questa sezione descrive la ricerca di una raccolta XML in termini di creazione di

documenti XML utilizzando criteri di ricerca e la ricerca per dati XML decomposti.

Composizione dei documenti XML utilizzando i criteri di

ricerca

Questa attività è uguale della composizione utilizzando una condizione.

Procedura:

E’ possibile specificare i criteri di ricerca utilizzando i seguenti criteri di ricerca:

v Specificare la condizione in text_node e attribute_node del file DAD

v Specificare il parametro override durante l’utilizzo delle procedure memorizzate

dxxGenXML() e dxxRetrieveXML().

Ad esempio, se si è abilitata una raccolta XML, sales_ord, utilizzando il file

DAD, order.dad, ma si desidera sovrascrivere il prezzo utilizzando i dati del

modulo derivati dal Web, è possibile sovrascrivere il valore dell’elemento DAD

<SQL_stmt>, come segue:

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

...

EXEC SQL END DECLARE SECTION;

float price_value;

/* crea la tabella */

EXEC SQL CREATE TABLE xml_order_tab (xmlorder XMLVarchar);

/* inizializza la variabile host e gli indicatori */

strcpy(collection,"sales_ord");

strcpy(result_tab,"xml_order_tab");

overrideType = SQL_OVERRIDE;

max_row = 20;

num_row = 0;

returnCode = 0;

msg_txt[0] = ’\0’;

override_ind = 0;

overrideType_ind = 0;

rtab_ind = 0;

maxrow_ind = 0;

numrow_ind = -1;

returnCode_ind = -1;

returnMsg_ind = -1;

/* richiamare price_value, ad esempio dai dati del modulo */

price_value = 1000.00 /* ad esempio*/

/* specificare la sovrascrittura */

sprintf(overwrite,

"SELECT o.order_key, customer, p.part_key, quantity, price,

tax, ship_id, date, mode

FROM order_tab o, part_tab p,

table

(select substr(char(timestamp(generate_unique())),16)

as ship_id, date, mode from ship_tab) s

WHERE p.price > %d and s.date >’1996-06-01’ AND

100 XML Extender - Amministrazione e programmazione

Page 111: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

p.order_key = o.order_key and s.part_key = p.part_key",

price_value);

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxRetrieveXML(:collection:collection_ind,

:result_tab:rtab_ind,

:overrideType:overrideType_ind,:overwrite:overwrite_ind,

:max_row:maxrow_ind,:num_row:numrow_ind,

:returnCode:returnCode_ind,:returnMsg:returnMsg_ind);

The condition of price > 2500.00 in order.dad is overridden by price > ?, where ?

is based on the input variable price_value.

Ricerca dei dati XML decomposti

E’ possibile utilizzare le operazioni di query SQL normale per ricercare le tabelle di

raccolta. E’ possibile unire le tabelle di raccolta o utilizzare sottoquery e quindi

effettuare una ricerca testo-strutturale per le colonne del testo. Applicare i risultati

della ricerca strutturale per richiamare o generare il documento XML specificato.

Schemi di associazione per raccolte XML

Se si utilizza una raccolta XML, è necessario selezionare uno schema di associazione,

che specifica il modo in cui i dati XML sono rappresentati in un database

relazionale. Poiché le raccolte XML devono corrispondere alla struttura gerarchica

di documenti XML con una struttura relazionale per i database relazionali, è

necessario comprendere le differenze tra le due strutture. Figura 10 a pagina 102

mostra il modo in cui la struttura gerarchica può essere associata alle colonne delle

tabelle relazionali.

Capitolo 4. Gestione di dati nelle raccolte XML 101

Page 112: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

XML Extender utilizza uno schema di associazione quando si compongono o si

decompongono documenti XML che si trovano in più tabelle relazionali. Prima di

creare il file DAD, è necessario comprendere il modo in cui i dati XML sono

associati alla raccolta XML.

Tipi di schemi di associazione:

Utilizzare <Xcollection> per specificare lo schema di associazione nel file DAD.

XML Extender fornisce due tipi di schemi di associazione: associazione SQL e

associazione di database relazionale (RDB_node).

associazione SQL

Questo metodo consente un’associazione diretta dai dati relazionali ai

documenti XML mediante una semplice istruzione SQL. L’associazione

SQL è utilizzata solo per la composizione. Il contenuto dell’elemento

<SQL_stmt> deve essere un’istruzione SQL valida. L’elemento <SQL_stmt>

specifica le colonne nella clausola SELECT che sono associate agli elementi

o agli attributi XML nel DAD. Quando definiti per la composizione di

documenti XML, i nomi delle colonne nella clausola SELECT

dell’istruzione SQL sono utilizzati per associare il valore di un

nodo_attributo o del contenuto di un nodo_testo alle colonne che hanno lo

Figura 10. Struttura di documenti XML associata a colonne di tabelle relazionali

102 XML Extender - Amministrazione e programmazione

Page 113: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

stesso attributo_name. La clausola FROM definisce le tabelle contenenti i

dati, mentre la clausola WHERE specifica join e ricerca condition.

L’associazione SQL consente gli utenti DB2® di associare i dati mediante

SQL. Quando si utilizza l’associazione SQL, è necessario poter unire tutte

le tabelle in una istruzione SELECT per formare un’interrogazione. Se una

istruzione SQL non è sufficiente, provare a utilizzare l’associazione

RDB_node. Per collegare tutte le tabelle, è preferibile utilizzare una

relazione tra chiave primaria e chiave esterna tra le tabelle.

associazione RDB_node

Definisce la posizione del contenuto di un elemento XML o il valore di un

attributo XML in modo che XML Extender possa determinare dove

memorizzare o richiamare i dati XML.

Questo metodo utilizza l’associazione RDB_node fornita da XML Extender,

che contiene una o più definizioni di nodo per le tabelle, le colonne

opzionali e le condizioni opzionali. Gli elementi <table> e <column> nel

DAD definiscono il modo in cui i dati XML devono essere memorizzati nel

database. La condizione specifica i criteri per la selezione dei dati XML o il

modo con cui unire le tabelle delle raccolte XML.

Per definire uno schema di associazione, è necessario creare un file DAD con un

elemento <Xcollection>. Figura 11 a pagina 104 mostra un frammento di un file

DAD di esempio con un’associazione SQL per una raccolta XML, che compone una

serie di documenti XML dai dati in tre tabelle relazionali.

Capitolo 4. Gestione di dati nelle raccolte XML 103

Page 114: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

XML Extender fornisce diverse procedure memorizzate che gestiscono i dati in una

raccolta XML. Tali procedure memorizzate supportano entrambi i tipi di

associazione.

Argomenti correlati:

v “Requisiti per l’associazione RDB_Node” a pagina 106

v “Requisiti per l’utilizzo dell’associazione SQL”

v “File DAD per le raccolte XML” a pagina 167

Attività correlate:

v “Composizione di raccolte XML utilizzando l’associazione RDB_node” a pagina

62

v “Composizione dei documenti XML utilizzando l’associazione SQL” a pagina 59

v “Decomposizione di una raccolta XML utilizzando l’associazione RDB_node” a

pagina 66

Requisiti per l’utilizzo dell’associazione SQL

Requisiti durante l’utilizzo dell’associazione SQL

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "install_dxx/samples/extenders/db2xml/dtd/dad.dtd">

<DAD>

<dtdid>install_dxx/samples/extenders/db2xml/dad/getstart.dtd</dtdid>

<validation>YES</validation>

<Xcollection>

<SQL_stmt>

SELECT o.order_key, customer, p.part_key, quantity, price, tax, date,

ship_id, mode, comment

FROM order_tab o, part_tab p,

table(select substr(char(timestamp

(generate_unique())),16)

as ship_id, date, mode, from ship_tab)

WHERE p.price > 2500.00 and s.date > "1996-06-01" AND

p.order_key = o.order_key and s.part_key = p.part_key

</SQL_stmt>

<prolog>?xml version="1.0"?</prolog>

<doctype>!DOCTYPE DAD SYSTEM

"install_dxx/samples/extenders/db2xml/dtd/getstart.dtd

"</doctype>

<root_node>

<element_node name="Order">

<attribute_node name="Key">

<column name="order_key"/>

</attribute_node>

<element_node name="Customer">

<text_node>

<column name="customer"/>

</text_node>

<element_node>

...

</element_node><!-end Part->

</element_node><!-end Order->

</root_node>

</Xcollection>

</DAD>

Figura 11. Schema di associazione SQL

104 XML Extender - Amministrazione e programmazione

Page 115: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

In questo schema di associazione, è necessario specificare l’elemento

<SQL_stmt> interno all’elemento DAD <Xcollection>. E’ necessario che

<SQL_stmt> contenga una singola istruzione SQL che possa unire tabelle

relazionali multiple con la query predicate. In aggiunta, le seguenti clausole

sono obbligatorie:

v clausola SELECT

– Assicura che il nome della colonna si a univoco. Se due tabelle hanno

lo stesso nome di colonna, utilizzare la parola chiave AS per creare un

nome alternativo per una delle due.

– Raggruppare le colonne della stessa tabella insieme e ordinare le

tabelle secondo il livello della struttura così come le tabelle si

associano alla struttura gerarchica del relativo documento XML. La

prima colonna in ogni raggruppamento di colonna è un oggetto ID.

Nella clausola SELECT, è necessario che le colonne delle tabelle di

livello più alto precedano le colonne delle tabelle di livello più basso.

Il seguente esempio dimostra la relazione gerarchica tra le tabelle:

SELECT o.order_key, customer, p.part_key, quantity, price, tax,

ship_id, date, mode

In questo esempio, le colonne order_key e customer della tabella

ORDER_TAB hanno il livello relazionale più alto poiché si trovano

più in alto nella struttura gerarchica del documento XML. Le colonne

ship_id, date e mode della tabella SHIP_TAB si trovano al livello

relazionale più basso.

– Utilizzare una chiave candidata a singola colonna all’inizio di ogni

livello. Se questa chiave non è disponibile in una tabella, la query ne

deve generare una per la tabella che utilizza una espressione della

tabella e la funzione generate_unique(). Nell’esempio precedente,

o.order_key è la chiave primaria per ORDER_TAB e part_key è la

chiave primaria per PART_TAB. Si trovano all’inizio del relativo

gruppo di colonne che devono essere selezionate. ship_id viene

generata come chiave primaria poiché la tabella SHIP_TAB non

presenta una chiave primaria. ship_id viene elencata come la prima

colonna per il gruppo della tabella SHIP_TAB. Utilizzare la clausola

FROM per generare la colonna della chiave primaria, come mostrato

nel seguente esempio.v clausola FROM

– Utilizza un’espressione della tabella e la funzione generate_unique()

per generare una singola chiave per le tabelle che non presentano una

chiave primaria singola. Ad esempio:

FROM order_tab as o, part_tab as p,

table(select substr

(char(timestamp(generate_unique())),16)

as

ship_id, date, mode, part key from ship_tab) as s

In questo esempio, una chiave candidata della colonna singola viene

generata con la funzione generate_unique() e viene fornito un alias

chiamato ship_id.

– Utilizzare un nome alternativo quando si rende necessario operare

una distinzione della colonna. Ad esempio, è possibile utilizzare o per

le colonne nella tabella ORDER_TAB, p per le colonne nella tabella

PART_TAB e s per le colonne nella tabella SHIP_TAB.v clausola WHERE

Capitolo 4. Gestione di dati nelle raccolte XML 105

Page 116: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

– Specifica una relazione della chiave primaria esterna così come le

condizioni di associazione che uniscono le tabelle nella raccolta Ad

esempio:

WHERE p.price > 2500.00 AND s.date > "1996-06-01" AND

p.order_key = o.order_key AND s.part_key = p.part_key

– Specificare ogni altra condizione di ricerca nel predicato. E’ possibile

utilizzare ogni predicato valido.v clausola ORDER BY

– Definisce la clausola ORDER BY alla fine di SQL_stmt. Assicurarsi che

non vi sia nulla dopo i nomi della colonna come ASC o DESC.

– Assicurarsi che i nomi della colonna corrispondano ai nomi della

colonna nella clausola SELECT.

– Elencare tutti gli ID dell’oggetto nel medesimo ordine relativo così

come appaiono nella clausola SELECT.

– Un identificatore può essere generato utilizzando un’espressione della

tabella e la funzione generate_unique() o una funzione definita

dall’utente.

– Conservare l’ordine decrescente della gerarchia delle entità. E’

necessario che la prima colonna specificata nella clausola ORDER BY

sia la prima colonna elencata per ciascuna entità. Il mantenimento

dell’ordine assicura che i documenti XML che devono essere generati

non contengano duplicati errati.

– Non qualificare le colonne nella clausola ORDER BY con un nome

schema o tabella.

L’elemento <SQL_stmt> è più potente poiché è possibile specificare

qualsiasi predicato nella relativa clausola WHERE, finchè l’espressione nel

predicato utilizza le colonne nelle tabelle.

Riferimenti correlati:

v Appendice A, “Esempi”, a pagina 287

Requisiti per l’associazione RDB_Node

Quando si utilizza RDB_Node come metodo di associazione, non utilizzare

l’elemento <SQL_stmt> nell’elemento <Xcollection> del file DAD. Utilizzare invece

l’elemento RDB_node come elemento secondario dell’elemento element_node

superiore e di ogni attribute_node e text_node.

v Elemento RDB_node per element_node superiore

L’elemento superiore element_node nel file DAD rappresenta l’elemento root del

documento XML. Specificare un RDB_node per element_node come riportato di

seguito:

– Specificare tutte le tabelle associate alla raccolta XML. Ad esempio, la

seguente associazione specifica tre tabelle nell’elemento <RDB_node> del

nodo di elementi <Order>, che è il nodo di elementi superiore:

<element_node name="Order">

<RDB_node>

<table name="order_tab"/>

<table name="part_tab"/>

<table name="ship_tab"/>

<condition>

106 XML Extender - Amministrazione e programmazione

Page 117: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

order_tab.order_key = part_tab.order_key AND

part_tab.part_key = ship_tab.part_key

</condition>

</RDB_node>

L’elemento condition può essere vuoto o mancante solo se nella raccolta è

presente solo una tabella.

– Non esistono limitazioni sull’ordine dei predicati dell’elemento condition del

nodo root.

– Gli elementi condition possono fare riferimento al nome di una colonna un

numero illimitato di volte.

– Se si abilita una raccolta, è necessario specificare una chiave primaria per ogni

tabella. La chiave primaria può essere costituita da una o più colonne, e in

quest’ultimo caso è detta chiave composta. Specificare la chiave primaria

aggiungendo un attributo key all’elemento della tabella di RDB_node. Quando

si fornisce una chiave composta, l’attributo key sarà specificato dai nomi delle

colonne delle chiavi separati da uno spazio. Ad esempio:

<table name="part_tab" key="part_key price"/>

Le informazioni specificate per la decomposizione sono ignorate se per la

composizione viene utilizzato lo stesso DAD.

– Utilizzare l’attributo orderBy per ricomporre documenti XML contenenti

elementi o attributi con più ricorrenze alla struttura originale. Questo

attributo consente di specificare il nome di una colonna che sarà la chiave

utilizzata per conservare l’ordine del documento. L’attributo orderBy è parte

dell’elemento della tabella nel file DAD ed è un attributo opzionale. Quando

si decompongono i documenti XML in una raccolta XML, è possibile che

venga perso l’ordine dei valori di elementi e attributi presenti più volte a

meno che non si specifichi l’ordine in un file DAD. Per conservare questo

ordine, è necessario utilizzare lo schema di associazione RDB_node e

specificare l’attributo orderBy per la tabella contenente l’elemento root in

RDB_node.

Specificare il nome della tabella e il nome della colonna in <table>tag.

v Elemento RDB_node per ogni attribute_node e text_node

XML Extender deve sapere da dove richiamare i dati nel database. XML

Extender deve anche conoscere la posizione del database in cui inserire il

contenuto da un documento XML. È necessario specificare un RDB_node per

ogni nodo di attributi e di testo. È inoltre necessario specificare i nomi di tabelle

e colonne; il valore condition è facoltativo.

1. Specificare il nome della tabella contenente i dati della colonna. Il nome della

tabella deve essere incluso nell’elemento RDB_node dell’elemento

element_node superiore. In questo esempio, per text_node dell’elemento

<Price>, la tabella viene specificata come PART_TAB.

<element_node name="Price">

<text_node>

<RDB_node>

<table name="part_tab"/>

<column name="price"/>

<condition>

price > 2500.00

</condition>

</RDB_node>

</text_node>

</element_node>

Capitolo 4. Gestione di dati nelle raccolte XML 107

Page 118: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

2. Specificare il nome della colonna che contiene i dati per il testo

dell’elemento. Nell’esempio precedente, la colonna è specificata come PRICE.

3. Specificare una condizione query se si desidera che i documenti XML

vengano generati utilizzando tale condizione. Soltanto i dati che rispondono

a tale condizione saranno presenti nei documenti XML generati. La

condizione deve essere una clausola WHERE valida. Nell’esempio

precedente, la condizione è specificata come price > 2500.00, pertanto solo

le righe in cui il prezzo è superiore a 2500 verranno incluse nei documenti

XML.

4. Se si sta decomponendo un documento o se si abilita la raccolta XML

specificata dal file DAD, è necessario specificare il tipo di colonna per ogni

nodo di at tributi e di testo. Specificando il tipo di colonna, si garantisce che

venga creato il tipo corretto di dati per ogni colonna durante l’abilitazione di

una raccolta XML. I tipi di colonna sono specificati aggiungendo il tipo di

attributo all’elemento della colonna. Ad esempio:

<column name="order_key" type="integer"/>

Il tipo di colonna specificato durante la decomposizione di un documento

verrà ignorato per la composizione.v Mantenere l’ordine top-down della gerarchia di entità. Verificare che i nodi di

elementi siano nidificati correttamente in modo che XML Extender possa

comprendere la relazione tra gli elementi durante la composizione o la

decomposizione di documenti. Ad esempio, il seguente file DAD non nidifica

Shipment all’internodi Part:

<element_node name="Part">

...

<element_node name="ExtendedPrice">

...

</element_node>

...

</element_node> <!-- end of element Part -->

<element_node name="Shipment" multi_occurrence="YES">

<element_node name="ShipDate">

...

</element_node>

<element_node name="ShipMode">

...

</element_node>

</element_node> <!-- end of element Shipment-->

Questo file DAD produce un documento XML in cui gli elementi Part e

Shipment sono paralleli.

<Part color="black ">

<key>68</key>

<Quantity>36</Quantity>

<ExtendedPrice>34850.16</ExtendedPrice>

<Tax>6.000000e-2</Tax>

</Part>

<Shipment>

<ShipDate>1998-08-19</ShipDate>

<ShipMode>BOAT </ShipMode>

</Shipment>

Il seguente codice mostra l’elemento shipment nidificato all’interno dell’elemento

Part nel file DAD.

108 XML Extender - Amministrazione e programmazione

Page 119: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<element_node name="Part">

...

<element_node name="ExtendedPrice">

...

</element_node>

...

<element_node name="Shipment" multi_occurrence="YES">

<element_node name="ShipDate">

...

</element_node>

<element_node name="ShipMode">

...

</element_node>

</element_node> <!-- end of element Shipment-->

</element_node> <!-- end of element Part -->

La nidificazione dell’elemento shipment all’interno dell’elemento part produce

un file XML con Shipment come elemento secondario dell’elemento Part:

<Part color="black ">

<key>68</key>

<Quantity>36</Quantity>

<ExtendedPrice>34850.16</ExtendedPrice>

<Tax>6.000000e-2</Tax>

<Shipment>

<ShipDate>1998-08-19</ShipDate>

<ShipMode>BOAT </ShipMode>

</Shipment>

</Part>

Con l’approccio dell’associazione RDB_node, non è necessario fornire istruzioni

SQL. Tuttavia, l’inserimento di condizioni query complesse nell’elemento

RDB_node può essere più difficile.

Per una struttura secondaria del file DAD con element_nodes e attribute_nodes

associati alla stessa tabella, si verifica:

v I nodi di attributi non devono essere i primi elementi secondari dell’elemento

principale comune inferiore dei nodi di elementi associati alla stessa tabella.

v I nodi di attribute possono essere presenti in qualsiasi punto della struttura

secondaria, sempre che non siano coinvolti in una condizione join.

Limitazioni: il limite per il numero di tabelle consentite nel file DAD di

un’associazione RDB_node è 30. Il numero di colonne consentite per ogni tabella è

500. Il numero di volte in cui ogni tabella o colonna può essere specificata nei

predicati join dell’istruzione condition è illimitato.

Fogli di stile per una raccolta XML

Durante la composizione di documenti, XML Extender supporta anche le istruzione

di elaborazione per i fogli di stile, utilizzando l’elemento <stylesheet>. E’

necessario che le istruzioni di elaborazione siano interne all’elemento root

<Xcollection>, che si trova con <doctype> e <prolog> definito per la struttura del

documento XML. Ad esempio:

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "c:\dtd\dad.dtd">

<DAD>

<SQL_stmt>

...

</SQL_stmt>

<Xcollection>

...

Capitolo 4. Gestione di dati nelle raccolte XML 109

Page 120: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<prolog>...</prolog>

<doctype>...</doctype>

<stylesheet>?xml-stylesheet type="text/css" href="order.css"?</stylesheet>

<root_node>...</root_node>

...

</Xcollection>

...

</DAD>

Percorsi di posizioni

Un percorso di posizione definisce la posizione di un elemento o di un attributo XML

all’interno della struttura del documento XML. XML Extender utilizza il percorso

della posizione per i seguenti scopi:

v Per individuare gli elementi e gli attributi da estrarre quando si utilizzano gli

UDF di estrazione come dxxRetrieveXML.

v Per specificare l’associazione tra un elemento o un attributo XML e una colonna

DB2® quando si definisce lo schema di indicizzazione nel DAD per le colonne

XML

v Per le ricerche di testo strutturale, mediante Net Search Extender

Ad esempio, un percorso di posizione di /Order/Part/Shipment/ShipDate fa

riferimento all’elemento ShipDate, che è un elemento secondario degli elementi

Shipment, Part e Order, come riportato nel seguente esempio:

<Order>

<Part>

<Shipment>

<ShipDate>

+...

Figura 12 mostra un esempio di percorso di posizione e la relativa relazione con la

strutture del documento XML.

Il percorso della posizione viene utilizzato nelle seguenti situazioni:

Figura 12. Memorizzazione di documenti come documenti XML strutturati nella colonna di

una tabella DB2

110 XML Extender - Amministrazione e programmazione

Page 121: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Colonne XML

v Utilizzate per identificare gli elementi e gli attributi da estrarre o

aggiornare quando si utilizzano le funzioni definite dall’utente XML

Extender.

v Utilizzate anche per associare il contenuto di un elemento o di un

attributo XML su una tabella laterale.

Raccolte XML

Utilizzato per sovrascrivere i valori nel file DAD da una procedura

memorizzata.

Per specificare il percorso di posizione, XML Extender utilizza una serie di XML

Path Language (XPath), il linguaggio per indirizzare le parti di un documento XML.

Per ulteriori informazioni su XPath, fare riferimento alla seguente pagina Web:

http://www.w3.org/TR/xpath

Riferimenti correlati:

v “Sintassi del percorso della posizione”

Sintassi del percorso della posizione

XML Extender utilizza il percorso della posizione per navigare la struttura del

documento XML. Il seguente elenco descrive la sintassi del percorso della

posizione supportato da XML Extender. Una singola barra (/) del percorso indica

che il contesto è l’intero documento.

1. / Rappresenta l’elemento root XML. Questo è un elemento che contiene tutti

gli altri elementi nel documento.

2. /tag1

Rappresenta l’elemento tag1 sotto l’elemento root.

3. /tag1/tag2/..../tagn

Rappresenta un elemento con il nome tagn come l’elemento secondario

della catena decrescente dall’elemento root, tag1, tag2, attraverso tagn-1.

4. //tagn

Rappresenta ogni elemento con il nome tagn, dove le doppie barre (//)

denotano nessuna o più tag arbitrarie.

5. /tag1//tagn

Rappresenta ogni elemento con il nome tagn, un discendente di un

elemento con il nome tag1 sotto l’elemento root, dove le doppie barre (//)

denotano nessuna o più tag arbitrarie.

6. /tag1/tag2/@attr1

Rappresenta l’attributo attr1 di un elemento con il nome tag2, che è un

elemento secondario di un elemento tag1 sotto l’elemento root.

7. /tag1/tag2[@attr1=″5″]

Rappresenta un elemento con il nome tag2 il cui attributo attr1 ha come

valore 5. L’elemento tag2 è un elemento secondario dell’elemento tag1 sotto

l’elemento root.

8. /tag1/tag2[@attr1=″5″]/.../tagn

Rappresenta un elemento con il nome tagn, che è un elemento secondario

Capitolo 4. Gestione di dati nelle raccolte XML 111

Page 122: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

della catena decrescente dall’elemento root, tag1, tag2, attraverso tagn-1,

dove l’attributo attr1 di tag2 ha valore 5.

Percorso della posizione semplice

Il percorso della posizione semplice è un tipo di percorso della posizione

utilizzato nel file DAD della colonna XML. Un percorso della posizione

semplice è rappresentato come una sequenza di nomi del tipo

dell’elemento collegati da una barra semplice (/). I valori di ciascun

attributo sono racchiusi in parentesi quadre che seguono il tipo

dell’elemento. Tabella 13 riassume la sintassi per il percorso della posizione

semplice.

Tabella 13. Sintassi del percorso della posizione semplice

Subject Percorso della posizione Descrizione

elemento XML /tag1/tag2/..../tagn-1/tagn Un contenuto dell’elemento

identificato dall’elemento

chiamato tagn e dai relativi

elementi principali

attributo XML /tag_1/tag_2/..../tag_n-1/tag_n/@attr1 Un attributo denominato attr1

dell’elemento identificato da tagn e

dai relativi elementi principali

Utilizzo del percorso della posizione

La sintassi del percorso della posizione è dipendente dal contesto in cui si

accede alla posizione di un elemento o attributo. Poiché XML Extender

utilizza l’associazione uno a uno tra un elemento o un attributo e una

colonna DB2, restringe le regole della sintassi per il file DAD e le funzioni.

Tabella 14 descrive in quali contesti le opzioni di sintassi vengono

utilizzate.

Tabella 14. Le restrizioni di XML Extender che utilizzano il percorso della posizione

Utilizzo del percorso della posizione Percorso della posizione supportato

Valore dell’attributo del percorso

nell’associazione DAD della colonna XML

per le tabelle laterali

/tag1/tag2/..../tagn and /tag1/tag2/@attr1

(percorso della posizione semplice descritto

in Tabella 13)

Estrazione degli UDF Tutti i percorsi della posizione1

Aggiornamento UDF Tutti i percorsi della posizione1

1 L’estrazione e aggiornamento degli UDF supporta i percorsi della posizione che

presentano predicati con attributi, ma non elementi.

Argomenti correlati:

v “Percorsi di posizioni” a pagina 110

Abilitazione di raccolte XML

L’abilitazione di una raccolta XML analizza il file DAD per identificare le tabelle e

e le colonne relative al documento XML e registra le informazioni di controllo nella

tabella XML_USAGE. L’abilitazione di una raccolta XML è facoltativa per:

v La decomposizione di un documento XML e la memorizzazione dei dati nelle

nuove tabelle di database DB2

v La composizione di un documento XML da dati esistenti in più tabelle di

database DB2

112 XML Extender - Amministrazione e programmazione

Page 123: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Se lo stesso file DAD è utilizzato per la composizione e la decomposizione, è

possibile abilitare la raccolta sia per la composizione che la decomposizione.

È possibile abilitare una raccolta con XML il wizard di gestione di XML Extender,

con il comando dxxadm con l’opzione enable_collection o con la procedura

memorizzata di XML Extender dxxEnableCollection().

Utilizzo del wizard di gestione:

Per abilitare una raccolta XML mediante il wizard:

1. Impostare e avviare il wizard.

2. Fare clic su Operazioni con le raccolte XML dalla finestra Launchpad. Viene

aperta la finestra Selezione un’attività.

3. Fare clic su Abilita una raccolta e quindi su Avanti. Viene aperta la finestra

Abilita una raccolta.

4. Selezionare il nome della raccolta che si desidera abilitare nel campo Nome

raccolta.

5. Specificare il nome del file DAD nel campo Nome file DAD.

6. Facoltativo: immettere il nome di un tablespace creato precedentemente nel

campo Tablespace.

Il tablespace conterrà le nuove tabelle DB2 generate per la decomposizione.

7. Fare clic su Fine per abilitare la raccolta colonna e tornare alla finestra

Launchpad.

v Se la raccolta è stata abilitata correttamente, verrà visualizzato il messaggio

Raccolta abilitata correttamente.

v Se invece la raccolta non viene eliminata correttamente, verrà visualizzato un

messaggio di errore. Ripetere i passi precedenti fino a che la raccolta viene

abilitata.

Abilitazione delle raccolte mediante il comando dxxadm:

Per abilitare una raccolta XML, immettere il comando dxxadm dalla riga comandi

DB2:

Sintassi:

�� dxxadm enable_collection nome_db insieme file_DAD

-t

tablespace ��

Parametri:

nome_db

Il nome del database .

insieme

Il nome della raccolta XML. Questo valore è utilizzato come parametro per

le procedure memorizzate della raccolta XML.

file_DAD

Il nome del file che contiene la definizione DAD (document access

definition).

Capitolo 4. Gestione di dati nelle raccolte XML 113

Page 124: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

tablespace

Un tablespace esistente che contiene nuove tabelle DB2 che sono state

generate per la decomposizione. Se non specificato, viene utilizzato il

tablespace predefinito.

Esempio: il seguente esempio abilita una raccolta denominata sales_ord nel

database SALES_DB mediante la riga comandi. Il file DAD utilizza l’associazione

SQL.

dxxadm enable_collection SALES_DB sales_ord getstart_collection.dad

Una volta abilitata la raccolta XML, è possibile comporre o decomporre i

documenti XML mediante le procedure memorizzate di XML Extender.

Argomenti correlati:

v “Raccolte XML come metodo di accesso e di memorizzazione” a pagina 89

Attività correlate:

v “Disabilitazione delle raccolte XML”

v “Gestione di dati in raccolte XML” a pagina 90

Disabilitazione delle raccolte XML

La disabilitazione di una raccolta XML rimuove il record nella tabella

XML_USAGE che identifica tabelle e colonne come parte di una raccolta. Non

elimina le tabelle di dati. Viene disabilitata una raccolta quando si desidera

aggiornare DAD ed è necessario riabilitare una raccolta o quando si desidera

eliminare una raccolta.

È possibile disabilitare una raccolta XML con il wizard di gestione di XML

Extender, con il comando dxxadm con l’opzione disable_collection o con la

procedura memorizzata XML Extender dxxDisableCollection().

Procedura:

Per disabilitare una raccolta XML utilizzando il wizard di gestione:

1. Avviare il wizard di gestione.

2. Fare clic su Operazioni con le raccolte XML dalla finestra Launchpad per

visualizzare le attività relative alla raccolta di XML Extender. Viene aperta la

finestra Selezione un’attività.

3. Fare clic su Disabilita una raccolta XML e quindi fare clic su Avanti per

disabilitare una raccolta XML. Viene visualizzata la finestra Disabilita una

raccolta.

4. Immettere il nome della raccolta che si desidera disabilitare nel campo Nome

raccolta.

5. Fare clic su Fine per disabilitare la raccolta e ritornare alla finestra Launchpad.

v Se la raccolta è stata disabilitata correttamente, viene visualizzato il

messaggio Raccolta disabilitata correttamente.

v Se la raccolta non è stata disabilitata correttamente, viene visualizzato un

messaggio di errore. Ripetere la procedura precedente fino a quando la

raccolta non è stata disabilitata correttamente.

Per disabilitare una raccolta XML dalla riga comandi, immettere il comando

dxxadm.

114 XML Extender - Amministrazione e programmazione

Page 125: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Sintassi:

�� dxxadm disable_collection nome_db insieme ��

Parametri:

nome_db

Il nome del database .

insieme

Il nome della raccolta XML. Questo valore è utilizzato come parametro per

le procedure memorizzate della raccolta XML.

Esempio:

dxxadm disable_collection SALES_DB sales_ord

Argomenti correlati:

v “Raccolte XML come metodo di accesso e di memorizzazione” a pagina 89

v “Procedure memorizzate di gestione di XML Extender - Panoramica” a pagina

186

Attività correlate:

v “Gestione di dati in raccolte XML” a pagina 90

Capitolo 4. Gestione di dati nelle raccolte XML 115

Page 126: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

116 XML Extender - Amministrazione e programmazione

Page 127: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 5. Schemi XML

Lo schema XML può essere utilizzato al posto di un DTD per definire le specifiche

per il contenuto di elementi XML. Lo schema XML utilizza il formato o la sintassi

XML per definire i nomi di elementi o attributi di un documento XML e definisce

il tipo di contenuto che gli elementi e gli attributi possono contenere.

Vantaggi dell’utilizzo di schemi XML al posto dei DTD

I DTD sono più semplici da codificare e convalidare rispetto a uno schema XML.

Tuttavia, i vantaggi dell’utilizzo di uno schema XML sono riportati di seguito:

v Gli schemi XML sono documenti XML validi che possono essere elaborati da

strumenti quali XSD Editor in DB2 Developer Workbench, XML Spy o XML

Authority.

v Gli schemi XML sono più potenti dei DTD. Tutto ciò che può essere definito dal

DTD può essere definito anche dagli schemi, ma non viceversa.

v Gli schemi XML supportano una serie di tipi di dati, simili a quelli utilizzati nei

linguaggi di programmazione più comuni, e consente di creare tipi aggiuntivi. È

possibile limitare il contenuto del documento al tipo appropriato. Ad esempio, è

possibile replicare le proprietà dei campi trovati in DB2®.

v Gli schemi XML supportano espressioni regolari per impostare le limitazioni sui

dati di caratteri, il che non è possibile se si utilizza un DTD.

v Gli schemi XML forniscono un supporto migliore per i namespace XML che

consente di convalidare documenti che utilizzano più namespace e di riutilizzare

i costrutti da schemi già definiti in namespace differenti.

v Gli schemi XML forniscono un supporto migliore per la modularità e il riutilizzo

che includono e importano gli elementi.

v Gli schemi XML supportano l’ereditarietà per le definizioni di elementi, attributi

e dati.

Attività correlate:

v “Tipi di dati, elementi e attributi negli schemi” a pagina 118

Riferimenti correlati:

v “Esempi di uno schema XML” a pagina 119

Elemento complexType dello schema XML

L’elemento complexType dello schema XML è utilizzato per definire un tipo di

elemento che può essere costituito da elementi secondari. Ad esempio, le seguenti

tag mostrano la proiezione di un indirizzo in un documento XML:

<billTo country="US">

<name>Dan Jones</name>

<street>My Street</street>

<city>My Town</city>

<state>CA</state>

<zip>99999</zip>

</billTo>

© Copyright IBM Corp. 1999 - 2006 117

Page 128: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

La struttura di questo elemento può essere definita nello schema XML come

riportato di seguito:

1 <xsd:element name="billTo" type="USAddress"/>

2 < xsd:complexType name="USAddress">

3 <xsd:sequence>

4 < xsd:element name="name" type="xsd:string"/>

5 < xsd:element name="street" type="xsd:string"/>

6 < xsd:element name="city" type="xsd:string"/>

7 < xsd:element name="state" type="xsd:string"/>

8 < xsd:element name="zip" type="xsd:decimal"/>

9 </xsd:sequence>

10 < xsd:attribute name="country"

type="xsd:NMTOKEN" use="fixed"

value="US"/>

12</xsd:complexType>

Nell’esempio precedente, si assume che il prefisso xsd sia stato collegato al

namespace dello schema XML. Le righe da 2 a 12 definiscono complexType

USAddress come una sequenza di cinque elementi e un attributo. L’ordine degli

elementi è determinato dall’ordine in cui appaiono nella tag della sequenza.

Gli elementi più interni sono dal tipo di dati xsd:string o xsd:decimal. Entrambi

sono tipi di dati semplici predefiniti.

In alternativa, è possibile utilizzare la tag <all> o la tag <choice> al posto della tag

<sequence>. Con la tag all, tutti gli elementi secondari vengono visualizzati, ma

non devono avere un ordine particolare. Con la tag choice, uno degli elementi

secondari deve essere visualizzato nel documento XML.

È inoltre possibile utilizzare un tipo di dati definiti dall’utente per definire altri

elementi.

Tipi di dati, elementi e attributi negli schemi

Tipi di dati semplici in schemi XML

Gli schemi XML forniscono un insieme di tipi di dati semplici integrati. E’ possibile

effettuare la derivata di altri tipi di dati da questi applicando delle restrizioni.

Esempio 1: L’intervallo del tipo base xsd:positiveInteger è limitato tra 0 e 100.

< xsd:element name="quantity">

< xsd:simpleType>

< xsd:restriction base="xsd:positiveInteger">

< xsd:maxExclusive value="100"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

Esempio 2: Il tipo base xsd:string è limitato da un’espressione regolare.

<xsd:simpleType name="SKU">

< xsd:restriction base="xsd:string">

< xsd:pattern value="\d{3}-[A-Z]{2}"/>

</xsd:restriction>

</xsd:simpleType>

Esempio 3: Mostra un tipo numerato basato sul tipo integrato di stringa.

<xsd:simpleType name="SchoolClass">

< xsd:restriction base="xsd:string">

< xsd:enumeration value="WI"/>

118 XML Extender - Amministrazione e programmazione

Page 129: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

< xsd:enumeration value="MI"/>

< xsd:enumeration value="II"/>

< xsd:enumeration value="DI"/>

< xsd:enumeration value="AI"/>

</xsd:restriction>

</xsd:simpleType>

Elementi in schemi XML

Per dichiarare un elemento in uno schema XML è necessario indicare il nome e il

tipo come attributo dell’elemento element. Ad esempio:

<xsd:element name="street" type="xsd:string"/>

In aggiunta, è possibile utilizzare gli attributi minOccurs e maxOccurs per

determinare il numero massimo o minimo di volte in cui è necessario che

l’elemento appaia nel documento XML. Il valore predefinito per minOccurs e

maxOccurs è 1.

Attributi in schemi XML

Le dichiarazioni degli attributi appaiono alla fine di una definizione di un

elemento. Ad esempio:

<xsd:complexType name="PurchaseOrderType">

< xsd:sequence>

< xsd:element name="billTo" type="USAddress"/>

< xsd:sequence>

< xsd:attribute name="orderDate" type="xsd:date"/>

</xsd:complexType>

Argomenti correlati:

v “Vantaggi dell’utilizzo di schemi XML al posto dei DTD” a pagina 117

Attività correlate:

v “funzioni di convalida” a pagina 161

Riferimenti correlati:

v “Esempi di uno schema XML”

v “Elemento complexType dello schema XML” a pagina 117

Esempi di uno schema XML

È una buona strategia scrivere gli schemi XML progettando prima la struttura di

dati del documento XML utilizzando uno strumento UML. Dopo aver progettato la

struttura, è possibile associare la struttura al documento dello schema. Di seguito è

riportato un esempio di schema XML.

1 <?xml version="1.0" encoding="UTF-8"?>

2 <xs:schema xmlns:xs=’http://www.w3.org/2001/XMLSchema’>

3

4 <xs:element name="personnel">

5 <xs:complexType>

6 <xs:sequence>

7 <xs:element ref="person" minOccurs=’1’ maxOccurs=’unbounded’/>

8 </xs:sequence>

9 </xs:complexType>

10 </xs:element>

11

12 <xs:element name="person">

13 <xs:complexType>

14 <xs:sequence>

Capitolo 5. Schemi XML 119

Page 130: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

15 <xs:element ref="name"/>

16 <xs:element ref="email" minOccurs=’0’ maxOccurs=’4’/>

17 </xs:sequence>

18 <xs:attribute name="id" type="xs:ID" use=’required’/>

19 </xs:complexType>

20 </xs:element>

21

22 <xs:element name="name">

23 <xs:complexType>

24 <xs:sequence>

25 <xs:element ref="family"/>

26 <xs:element ref="given"/>

27 </xs:sequence>

28 </xs:complexType>

29 </xs:element>

30

31 <xs:element name="family" type=’xs:string’/>

32 <xs:element name="given" type=’xs:string’/>

33 <xs:element name="email" type=’xs:string’/>

34 </xs:schema>

Le prime due righe dichiarano che questo schema XML è compatibile con XML 1.0

e decodificato per Unicode 8 e specificano l’utilizzo del namespace standard dello

schema XML, che consente l’accesso ai tipo di dati e alle strutture di base dello

schema XML.

Le righe da 4 a 10 definiscono il personale come complexType, costituito da una

sequenza formata da 1 a n persone. Il complexType è quindi definito dalla riga 12

alla riga 20. Esso è costituito dall’elemento complexType nome e dall’elemento

email. L’elemento email è facoltativo (minOcccurs = ’0’) e può apparire un

massimo di quattro volte (maxOccurs = ’4’). Maggiore è il numero di ricorrenze di

un elemento, più tempo ci vorrà per convalidare lo schema. Per contro, in un file

DTD è possibile scegliere soltanto 0, 1 o illimitato per un elemento.

Le righe da 22 a 29 definiscono il tipo name utilizzato per il tipo person. Il tipo

name è costituito da una sequenza di un elemento family e un elemento given.

Le righe da 31 a 33 definiscono in singoli elementi, family, given e e-mail, che

contengono stringhe type che sono state dichiarate.

Istanza di un documento XML mediante lo schema

Il seguente esempio è un documento XML che è una istanza dello schema

personalnr.xsd.

1 <?xml version="1.0" encoding="UTF-8"?>

2 <personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

3 xsi:noNamespaceSchemaLocation=’personsnr.xsd’>

4

5 <person id="Big.Boss" >

6 <name><family>Boss</family><given>Big</given></name>

7 <email>[email protected]</email>

8 </person>

9

10 <person id="one.worker">

11 <name><family>Worker</family><given>One</given></name>

12 <email>[email protected]</email>

13 </person>

14

15 <person id="two.worker">

16 <name><family>Worker</family><given>Two</given></name>

17 <email>[email protected]</email>

18 </person>

19 </personnel>

120 XML Extender - Amministrazione e programmazione

Page 131: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Istanza di un documento XML mediante un DTD

Questo esempio mostra il modo in cui questo schema XML viene realizzato come

DTD.

1 <?xml version="1.0" encoding="UTF-8"?>

2 <!ELEMENT email (#PCDATA)>

3 <!ELEMENT family (#PCDATA)>

4 <!ELEMENT given (#PCDATA)>

5 <!ELEMENT name (family, given)>

6 <!ELEMENT person (name, email*)>

7

8 <!ATTLIST person

9 id ID #REQUIRED>

10 <!ELEMENT personnel (person+)>

L’utilizzo di un DTD consente di impostare il numero massimo di ricorrenza di

email su 1 o illimitato.

Utilizzando questo DTD, l’istanza del documento XML sarà uguale a quella

riportata nell’esempio precedente tranne per la riga 2, che diventa:

<!DOCTYPE personnel SYSTEM "personsnr.dtd">

Argomenti correlati:

v “Vantaggi dell’utilizzo di schemi XML al posto dei DTD” a pagina 117

Attività correlate:

v “Tipi di dati, elementi e attributi negli schemi” a pagina 118

v “funzioni di convalida” a pagina 161

Riferimenti correlati:

v “Elemento complexType dello schema XML” a pagina 117

Capitolo 5. Schemi XML 121

Page 132: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

122 XML Extender - Amministrazione e programmazione

Page 133: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Parte 4. Riferimento

Questa parte fornisce le informazioni sulla sintassi per il comando di gestione, gli

UDT (user-defined data types), le UDF (user-defined functions) e le procedure

memorizzate di XML Extender. Il testo dei messaggi viene fornito per le attività di

determinazione dei problemi.

© Copyright IBM Corp. 1999 - 2006 123

Page 134: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

124 XML Extender - Amministrazione e programmazione

Page 135: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 6. Comando di gestione dxxadm

Panoramica sul comando dxxadm

XML Extender fornisce un comando di gestione, dxxadm, per il completamento

delle seguenti attività di gestione:

v Abilitazione o disabilitazione di un database per XML Extender

v Abilitazione o disabilitazione di una colonna XML

v Abilitazione o disabilitazione di una raccolta XML

Argomenti correlati:

v “Strumenti di gestione per XML Extender” a pagina 35

v “Panoramica sulla gestione di XML Extender” a pagina 36

Sinstassi del comando di gestione dxxadm

�� dxxadm ’ -a enable_db parametri

disable_db

enable_column

parametri

disable_column

parametri

enable_collection

parametri

disable_collection

parametri

’ ��

Parametri:

Tabella 15. parametri dxxadm

Parametro Descrizione

enable_db Abilita le funzioni XML Extender per un

database.

disable_db Disabilita le funzioni XML Extender per un

database.

enable_column Abilita una colonna XML in modo che sia

possibile memorizzare i documenti XML nella

colonna.

disable_column Disabilita la colonna abilitata per XML.

enable_collection Abilita una raccolta XML secondo il DAD

specificato.

enable_collection Disabilita una raccolta abilitata per XML.

Opzioni del comando di gestione

Le seguenti opzioni del comando del comando dxxadm sono disponibili per i

programmatori di sistema:

v enable_column

v enable_collection

v enable_db

v disable_column

© Copyright IBM Corp. 1999 - 2006 125

Page 136: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v disable_collection

v disable_db

Opzione enable_db del comando dxxadm

Scopo:

Abilita le funzioni XML Extender per un database. Una volta abilitato il database,

XML Extender crea i seguenti oggetti:

v I tipi di XML Extender definiti dall’utente (UDT).

v Le funzioni di XML Extender definite dall’utente (UDF).

v La tabella di repository DTD XML Extender, DTD_REF, che memorizza i DTD e

le rispettive informazioni.

v La tabella di utilizzo XML Extender, XML_USAGE, che memorizza le

informazioni comuni per ogni colonna abilitata per XML e per ogni raccolta.

Sintassi:

�� dxxadm enable_db nome_db

-l

login

-p

password �

� -t

tablespace

, tablespace

��

Parametri:

Tabella 16. Parametri enable_db

Parametro Descrizione

db_name Il nome del database in cui si trovano i dati XML.

-l login ID utente facoltativo utilizzato per collegarsi al

database. Se non è specificato, viene utilizzato

quello corrente.

-p password Password facoltativa utilizzata per collegarsi al

database. Se non è specificata, viene utilizzata quella

corrente.

-t tablespace Nome facoltativo del tablespace esistente per

conservare le tabelle db2xml.XML_USAGE e

db2xml.DTD_REF. È possibile specificare anche un

secondo tablespace.

Se si utilizza DB2 Enterprise Server Edition con partizioni e si desidera specificare

un tablespace durante l’abilitazione del database, è necessario specificare un

gruppo di nodi al momento della creazione del tablespace. Ad esempio:

db2 "create database partition group mygroup on node (0,1)"

db2 "create regular tablespace mytb in database partition group mygroup

managed by system using (’mytb’)"

Nel suddetto esempio, occorre specificare il tablespace mytb durante l’abilitazione

del database.

Se non viene fornita alcuna opzione di tablespace al momento dell’abilitazione del

database, XML Extender verificherà se i tablespace DXXDTDRF e DXXXMLUS

126 XML Extender - Amministrazione e programmazione

Page 137: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

sono presenti. La tabella db2xml.dtd_ref verrà creata nel tablespace DXXDTDRF se

tale tablespace esiste e la tabella db2xml.xml_usage verrà creata nel tablespace

DXXXMLUS. Se uno dei tablespace DXXDTDRF o DXXXMLUS non esiste, la

rispettiva tabella (db2xml.dtd_ref o db2xml.xml_usage) verrà creata nel tablespace

più appropriato.

Se viene fornito un solo tablespace DXXDTDRF al momento dell’abilitazione del

database, entrambe le tabelle verranno create nel tablespace specificato. Se vengono

forniti due tablespace al momento dell’abilitazione del database, la tabella

db2xml.dtd_ref verrà creata nel primo tablespace elencato e la tabella

db2xml.xml_usage verrà creata nel secondo tablespace elencato.

Esempio::

L’esempio seguente abilita il database SALES_DB.

dxxadm enable_db SALES_DB

Riferimenti correlati:

v “Panoramica sul comando dxxadm” a pagina 125

Opzione disable_db del comando dxxadm

Scopo:

Disabilita le funzioni XML Extender per un database; questa azione è chiamata

“disabilitazione database.” Quando il database è disabilitato, non può più essere

utilizzato da XML Extender. Quando XML Extender disabilita il database, elimina i

seguenti oggetti:

v I tipi di XML Extender definiti dall’utente (UDT).

v Le funzioni di XML Extender definite dall’utente (UDF).

v La tabella di repository DTD XML Extender, DTD_REF, che memorizza i DTD e

le rispettive informazioni.

v La tabella di utilizzo XML Extender, XML_USAGE, che memorizza le

informazioni comuni per ogni colonna abilitata per XML e per ogni raccolta.

Importante: è necessario disabilitare tutte le colonne XML prima di tentare di

disabilitare un database. XML Extender non può disabilitare un database che

contiene colonne o raccolte abilitate per XML Extender. È inoltre necessario

eliminare tutte le tabelle le cui colonne sono definite con tipi di XML Extender

definiti dall’utente, ad esempio XMLCLOB.

Sintassi:

�� dxxadm disable_db nome_db

-l

login

-p

password ��

Parametri:

Tabella 17. Parametri disable_db

Parametro Descrizione

db_name Il nome del database in cui si trovano i dati

XML

Capitolo 6. Comando di gestione dxxadm 127

Page 138: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 17. Parametri disable_db (Continua)

Parametro Descrizione

-l login L’ID utente utilizzato per collegarsi al

database. Se non è specificato, viene

utilizzato quello corrente.

-p password La password utilizzata per collegarsi al

database. Se non è specificata, viene

utilizzata quella corrente.

Esempio::

L’esempio seguente disabilita il database SALES_DB.

dxxadm disable_db SALES_DB

Argomenti correlati:

v “Procedure memorizzate di gestione di XML Extender - Panoramica” a pagina

186

v Capitolo 13, “Tabelle del supporto di gestione di XML Extender”, a pagina 261

Opzione enable_column del comando dxxadm

Scopo:

Collega a un database e abilita una colonna XML in modo che possa contenere gli

UID di XML Extender. Quando si abilita una colonna, XML Extender effettua le

seguenti attività:

v Determina se la tabella XML ha una chiave primaria; in caso contrario XML

Extender modifica la tabella XML e aggiunge una colonna denominata

DXXROOT_ID.

v Crea tabelle laterali specificate nel file DAD con una colonna contenente un

identificativo univoco per ogni riga nella tabella XML. Questa colonna è l’ID

root specificato dall’utente o DXXROOT_ID indicato da XML Extender.

v Crea facoltativamente una vista predefinita per la tabella XML e le relative

tabelle laterali in alcuni casi utilizzando un nome specificato dall’utente.

Sintassi:

�� dxxadm enable_column nome_db nome_tab nome_colonna file_DAD �

� -t

tablespace

-v

vista_predefinita

-r

id_root �

� -l

login

-p

password ��

Parametri:

Tabella 18. Parametri enable_column

Parametro Descrizione

db_name Il nome del database in cui si trovano i dati

XML.

nome_tab Il nome della tabella in cui si trova la

colonna XML.

nome_colonna Il nome della colonna XML.

128 XML Extender - Amministrazione e programmazione

Page 139: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 18. Parametri enable_column (Continua)

Parametro Descrizione

DAD_file Il nome del file DAD che associa il

documento XML alle tabelle laterali e alla

colonna XML.

-t tablespace Il tablespace che contiene le tabelle laterali

associate alla colonna XML. Se non è

specificato, viene utilizzato quello

predefinito.

-v vista_predefinita Il nome della vista predefinita che unisce le

tabelle laterali e la colonna XML.

-r id_root Il nome della chiave primaria nella tabella di

colonne XML da utilizzare come id_root per

le tabelle laterali. L’id_root è facoltativo.

-l login L’ID utente utilizzato per collegarsi al

database. Se non è specificato, viene

utilizzato quello corrente.

-p password La password utilizzata per collegarsi al

database. Se non è specificata, viene

utilizzata quella corrente.

Se si utilizza IBM DB2 Enterprise Server Edition con partizioni e si desidera

specificare un tablespace durante l’abilitazione di una colonna, è necessario avere

specificato un gruppo di nodi al momento della creazione del tablespace. Ad

esempio:

db2 "create database partition group mygroup on node (0,1)"

db2 "create regular tablespace mytb in database partition group mygroup

managed by system using (’mytb’)"

Nel suddetto esempio, occorre specificare il tablespace mytb durante l’abilitazione

della colonna:

dxxadm enable_column mydatabase mytable mycolumn "dad/mydad.dad" -t mytb

Esempio::

Il seguente esempio abilita una colonna XML.

dxxadm enable_column SALES_DB SALES_TAB ORDER getstart.dad

-v sales_order_view -r INVOICE_NUMBER

Opzione disable_column del comando dxxadm

Scopo:

Collega a un database e disabilita la colonna abilitata per XML. Quando la colonna

è disabilitata, non può più contenere tipi di dati XML. Quando una colonna

abilitata per XML è disabilitata, vengono effettuate le seguenti azioni:

v La voce di utilizzo colonna XML viene eliminata dalla tabella XML_USAGE.

v USAGE_COUNT viene decrementato nella tabella DTD_REF.

v Tutti i trigger associati a questa colonna vengono eliminati.

v Tutte le tabelle laterali associate a questa colonna vengono eliminate.

Capitolo 6. Comando di gestione dxxadm 129

Page 140: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Importante: è necessario disabilitare una colonna XML prima di eliminare una

tabella. Se una tabella XML viene eliminata ma la colonna XML non viene

disabilitata, XML Extender conserva sia le tabelle laterali create che la voce di

colonna XML nella tabella XML_USAGE.

Sintassi:

�� dxxadm disable_column nome_db nome_tab nome_colonna

-l

login �

� -p

password ��

Parametri:

Tabella 19. Parametri disable_column

Parametro Descrizione

db_name Il nome del database in cui si trovano i dati.

tab_name Il nome della tabella in cui si trova la

colonna XML.

nome_colonna Il nome della colonna XML.

-l login L’ID utente utilizzato per collegarsi al

database. Se non è specificato, viene

utilizzato quello corrente.

-p password La password utilizzata per collegarsi al

database. Se non è specificata, viene

utilizzata quella corrente.

Esempi:

Il seguente esempio disabilita una raccolta abilitata per XML.

dxxadm disable_column SALES_DB SALES_TAB ORDER

Opzione enable_collection del comando dxxadm

Scopo:

Collega a un database e abilita una raccolta XML secondo il DAD specificato.

Quando si esegue XML Extender in un ambiente Enterprise Server Edition con

partizioni, verificare che tutte le tabelle specificate nel file DAD includano almeno

una colonna qualificata come chiave di partizionamento. Quando si abilita una

raccolta, XML Extender effettua le seguenti attività:

v Crea una voce di utilizzo raccolta XML nella tabella XML_USAGE.

v Per l’associazione RDB_node, crea tabelle di raccolta specificate in DAD se le

tabelle non sono presenti nel database.

Sintassi:

�� dxxadm enable_collection db_name nome_raccolta DAD_file �

� -t

tablespace

-l

login

-p

password ��

Parametri:

130 XML Extender - Amministrazione e programmazione

Page 141: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 20. Parametri enable_collection

Parametro Descrizione

db_name Il nome del database in cui si trovano i dati.

nome_raccolta Il nome della raccolta XML.

DAD_file Il nome del file DAD che associa il

documento XML alle tabelle relazionali nella

raccolta.

-t tablespace Il nome del tablespace associato alla raccolta.

Se non è specificato, viene utilizzato quello

predefinito.

-l login L’ID utente utilizzato per collegarsi al

database. Se non è specificato, viene

utilizzato quello corrente.

-p password La password utilizzata per collegarsi al

database. Se non è specificata, viene

utilizzata quella corrente.

Se si utilizza IBM DB2 Enterprise Server Edition con partizioni e si desidera

specificare un tablespace durante l’abilitazione di una raccolta, è necessario avere

specificato un gruppo di nodi al momento della creazione del tablespace. Ad

esempio:

db2 "create database partition group mygroup on node (0,1)"

db2 "create regular tablespace mytb in database partition group mygroup

managed by system using (’mytb’)"

Nel suddetto esempio, occorre specificare il tablespace mytb durante l’abilitazione

della raccolta.

Esempi:

Il seguente esempio abilita una raccolta XML.

dxxadm enable_collection SALES_DB sales_ord

getstart_xcollection.dad -t orderspace

Opzione disable_collection del comando dxxadm

Scopo:

Collega a un database e disabilita una raccolta abilitata per XML. Il nome raccolta

non può più essere utilizzato nella composizione (dxxRetrieveXML) e

decomposizione (dxxInsertXML) delle procedure memorizzate. Quando una

raccolta XML è disabilitata, la voce di raccolta associata viene eliminata dalla

tabella XML_USAGE. La disabilitazione della raccolta non elimina le relative

tabelle create quando si utilizza l’opzione enable_collection.

Sintassi:

�� dxxadm disable_collection nome_db nome_raccolta

-l

login �

Capitolo 6. Comando di gestione dxxadm 131

Page 142: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

� -p

password ��

Parametri:

Tabella 21. Parametri disable_collection

Parametro Descrizione

db_name Il nome del database in cui si trovano i dati.

nome_raccolta Il nome della raccolta XML.

-l login L’ID utente utilizzato per collegarsi al

database. Se non è specificato, viene

utilizzato quello corrente.

-p password La password utilizzata per collegarsi al

database. Se non è specificata, viene

utilizzata quella corrente.

Esempio::

Il seguente esempio disabilita una raccolta XML.

dxxadm disable_collection SALES_DB sales_ord

132 XML Extender - Amministrazione e programmazione

Page 143: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 7. Tipi definiti dall’utente di XML Extender

I tipi definiti dall’utente (UDT, user-defined types)sono tipi di dati creati da

un’applicazione o uno strumento DB2®. XML Extender crea i seguenti UDT da

utilizzare con le colonne XML:

v XMLVARCHAR

v XMLCLOB

v XMLFILE

I tipi di dati sono utilizzati per definire la colonna nella tabella dell’applicazione

che viene utilizzata per memorizzare il documento XML. I documenti XML

possono essere memorizzati anche sul file system, specificando un nome file.

Tutti i tipi definiti dall’utente di XML Extender hanno il qualificatoreDB2XML, che

è il nome schema dell’UDT DB2 XML Extender. Ad esempio:

db2xml.XMLVarchar

XML Extender crea UDT per la memorizzazione e il richiamo di documenti XML.

La Tabella 22 descrive gli UDT.

Tabella 22. UDT di XML Extender

Colonna UDT (user-defined

type)

Tipo di dati di origine Descrizione per l’utilizzo

XMLVARCHAR VARCHAR(varchar_len) Memorizza un intero

documento XML come

VARCHAR all’interno di

DB2. È possibile ridefinire

XMLVARCHAR fino a un

massimo di 32 KB. Per

modificare la dimensione di

un UDT XMLVARCHAR,

creare l’UDT prima di

abilitare il database per XML

Extender.

XMLCLOB CLOB(clob_len) Memorizza un intero

documento XML come CLOB

(character large object)

all’interno di DB2.

XMLFILE VARCHAR(512) Specifica il nome completo

del server di file locale. Se

XMLFILE è specificato per la

colonna XML, allora XML

Extender memorizza il

documento XML in un file di

server esterno. È necessario

verificare l’integrità tra il

contenuto del file, DB2 e la

tabella laterale creata per

l’indicizzazione.

Dove varchar_len e clob_len sono specifici per il sistema operativo.

© Copyright IBM Corp. 1999 - 2006 133

Page 144: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Per XML Extender su DB2 su sistemi Linux, Unix e Windows®, varchar_len = 3K e

clob_len = 2G.

Per modificare la dimensione di un UDT XMLVARCHAR o XMLCLOB, creare

l’UDT prima di abilitare il database per XML Extender.

Procedura:

Per modificare la dimensione di un UDT XMLVARCHAR o XMLCLOB di un

database abilitato:

1. Eseguire il backup di tutti i dati nel database abilitato per XML Extender

2. Eliminare tutte le tabelle della raccolta XML o le tabelle laterali della colonna

XML

3. Disabilitare il database con il comando dxxadm disable_db .

4. Creare l’UDT XMLVARCHAR o XMLCLOB.

5. Abilitare il database con il comando dxxadm enable_db.

6. Creare di nuovo e ricaricare le tabelle.

Questi UDT sono utilizzati solo per specificare i tipi di colonne dell’applicazione;

essi non sono applicati alle tabelle laterali create da XML Extender.

v “Schemi di associazione per raccolte XML” a pagina 101

v “Preparazione alla gestione di XML Extender” a pagina 35

v “Raccolte XML come metodo di accesso e di memorizzazione” a pagina 89

v “Colonne XML come metodo di accesso e di memorizzazione” a pagina 74

134 XML Extender - Amministrazione e programmazione

Page 145: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 8. Funzioni definite dall’utente di XML Extender

Una funzione definita dall’utente (UDF, user–defined function) è una funzione

definita sul sistema di gestione del database e a cui si può fare riferimento nelle

istruzioni SQL. In questa sezione vengono descritte le funzioni definite dall’utente

fornite da IBM DB2 XML Extender.

Tipi di funzioni definite dall’utente di XML Extender

XML Extender fornisce funzioni per la memorizzazione, il richiamo, la ricerca e

l’aggiornamento di documenti XML e per l’estrazione di elementi o attributi XML.

Tutte le UDF hanno il nome schema DB2XML.

I tipi di funzione XML Extender sono descritti nel seguente elenco:

funzioni di memorizzazione

Le funzioni di memorizzazione inseriscono documenti XML intatti nelle

colonne abilitate per XML come tipi di dati XML.

funzioni di richiamo

Le funzioni di richiamo richiamano documenti XML da colonne XML in un

database DB2®.

funzioni di estrazione

Le funzioni di estrazione estraggono e convertono il contenuto di un

elemento o il valore di un attributo da un documento XML nel tipo di dati

specificato dal nome della funzione. XML Extender fornisce una serie di

funzioni di estrazione per diversi tipi di dati SQL.

funzione di aggiornamento

La funzione di aggiornamento modifica un intero documento XML o il

contenuto dell’elemento o i valori dell’attributo specificati e restituisce una

copia di un documento XML con un valore aggiornato, specificato nel

percorso della posizione.

funzioni di convalida

Le funzioni di convalida convalidano i documenti XML rispetto a uno

schema XML o a un DTD.

Le funzioni definite dall’utente XML consentono di eseguire ricerche su tipi di dati

SQL generali. Inoltre, è possibile utilizzare DB2 Net Search Extender con XML

Extender per eseguire ricerche di testo complete e strutturali sul testo dei documenti

XML. Questa funzione di ricerca può essere utilizzata, ad esempio, per migliorare

l’utilizzo di un sito Web che pubblica grosse quantità di testo leggibile, come

articoli di giornale o applicazioni Electronic Data Interchange (EDI), che hanno un

numero elevato di elementi o attributi ricercabili.

Limitazione: quando si utilizzano contrassegni di parametri nelle UDF, una

limitazione di Java™ database (JDBC) richiede che venga eseguito il casting del

contrassegno per l’UDF sul tipo di dati della colonna in cui verranno inseriti i dati

restituiti.

© Copyright IBM Corp. 1999 - 2006 135

Page 146: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Nomi di UDT e UDF per XML Extender

Il nome completo di una funzione DB2® è nome-schema.nome-funzione, dove

nome-schema è un identificativo che fornisce un raggruppamento logico per una

serie di oggetti SQL. Il nome dello schema per gli UDF e gli UDT di XML Extender

è Nella documentazione, i riferimenti sono solo al nome della funzione.

È possibile specificare UDT e UDF senza il nome dello schema se si aggiunge tale

nome al percorso della funzione. Il percorso della funzione è un elenco ordinato di

nomi schemi. Il database DB2 utilizza l’ordine dei nomi schema nell’elenco per

risolvere i riferimenti alle funzioni e agli UDT. È possibile specificare il percorso

della funzione specificando l’istruzione SQL SET CURRENT FUNCTION PATH.

Questa istruzione imposta il percorso della funzione nel registro speciale

CURRENT FUNCTION PATH.

Suggerimento: aggiungere il nome schema DB2XML al percorso della funzione.

Aggiungendo questo nome schema, è possibile immettere i nomi UDF eUDT di

XML Extender senza doverli qualificare con DB2XML. Il seguente esempio mostra

come aggiungere lo schema DB2XML al percorso della funzione:

SET CURRENT FUNCTION PATH = DB2XML, CURRENT FUNCTION PATH

Limitazione: non aggiungere DB2XML come primo schema nel percorso della

funzione se ci si collega con un ID utente DB2XML. DB2XML viene impostato

automaticamente come primo schema quando ci si collega comeDB2XML. Se si

aggiunge DB2XML come primo schema nel percorso della funzione, verrà ricevuto

un errore in quanto il percorso della funzione inizia con due schemi DB2XML.

Funzioni di memorizzazione

Panoramica sulle funzioni di memorizzazione in XML Extender

Utilizzare le funzioni di memorizzazione per inserire i documenti XML in un

database DB2. È possibile utilizzare le funzioni di casting predefinite di un UDT

direttamente nelle istruzioni INSERT o SELECT. Inoltre, XML Extender fornisce

UDF per richiamare i documenti XML dalle origini diverse dal tipo di dati di base

dell’UDT e convertirli nell’UDT specificato.

Prima di poter utilizzare gli UDF per leggere o scrivere dal file system del server, è

necessario impostare le variabili d’ambiente come descritto in Appendice C, “Limiti

di XML Extender”, a pagina 305.

Funzione XMLCLOBFromFile()

Scopo:

Legge un documento XML da un file di server e lo restituisce come tipo

XMLCLOB.

Sintassi:

�� XMLCLOBFromFile ( nome_file , )

codifica_src ��

Parametri:

136 XML Extender - Amministrazione e programmazione

Page 147: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 23. Parametri di XMLCLOBFromFile

Parametro Tipo di dati Descrizione

fileName VARCHAR(512) Il nome file completo del

server.

codifica_src VARCHAR(100) La codifica del file di origine.

Risultati:

XMLCLOB come LOCATOR

Esempio:

Il seguente esempio legge un documento XML da un file su un server e lo inserisce

in una colonna XML come tipo XMLCLOB. La codifica del file del server è

specificata esplicitamente come iso-8859-1.

EXEC SQL INSERT INTO sales_tab(ID, NAME, ORDER)

VALUES(’1234’, ’Sriram Srinivasan’,

XMLCLOBFromFile(’install_dxx/samples/extenders/db2xml

/xml/getstart.xml

’, ’iso-8859-1’))

dove install_dxx è la directory in cui è stato installato XML Extender.

La colonna ORDER nella tabella SALES_TAB è definita come tipo XMLCLOB.

Funzione XMLFileFromCLOB()

Scopo:

Legge un documento XML come indicatore di posizione CLOB e un foglio di stile

come CLOB o da un file e restituisce il documento come CLOB.

Sintassi:

�� XMLFileFromCLOB ( buffer , nome_file , )

codifica_destinazione ��

Parametri:

Tabella 24. Parametri di XMLFileFromCLOB()

Parametri Tipo di dati Descrizione

buffer CLOB come LOCATOR Il buffer contenente il

documento XML.

fileName VARCHAR(512) Il nome file completo del

server.

codifica_destinazione VARCHAR(100) La codifica del file di output.

Risultati:

XMLFILE

Esempio:

I seguente esempio legge un documento XML come indicatore di posizione CLOB

(una variabile host con un valore che rappresenta un unico valore LOB sul server

di database), lo scrive su un file del server esterno e inserisce il nome e il percorso

del file come tipo XMLFILE in una colona XML. La funzione codificherà il file di

output in ibm-808.

Capitolo 8. Funzioni definite dall’utente di XML Extender 137

Page 148: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

EXEC SQL BEGIN DECLARE SECTION;

SQL TYPE IS CLOB_LOCATOR xml_buff;

EXEC SQL END DECLARE SECTION;

EXEC SQL INSERT INTO sales_tab(ID, NAME, ORDER)

VALUES(’1234’, ’Sriram Srinivasan’,

XMLFileFromCLOB(:xml_buff, ’install_dxx/samples/extenders/db2xml

/xml/getstart.xml’, ’ibm-808’))

dove install_dxx è la directory in cui è stato installato XML Extender.

La colonna ORDER nella tabella SALES_TAB è definita come tipo XMLFILE. Se è

presente un documento XML nel buffer, è possibile memorizzarlo in un file del

server.

Funzione XMLFileFromVarchar()

Scopo:

Legge un documento XML dalla memoria come VARCHAR, lo scrive su un file del

server esterno e restituisce il nome e il percorso del file come tipo XMLFILE.

Sintassi:

�� XMLFileFromVarchar ( buffer , nome_file , )

codifica_destinazione ��

Parametri:

Tabella 25. Parametri di XMLFileFromVarchar

Parametro Tipo di dati Descrizione

buffer VARCHAR(3K) Il buffer contenente il

documento XML.

fileName VARCHAR(512) Il nome file completo del

server.

codifica_destinazione VARCHAR(100) La codifica del file di output.

Risultati:

XMLFILE

Esempio:

Il seguente esempio legge un documento XML dalla memoria come VARCHAR, lo

scrive su un file del server esterno e inserisce il nome e il percorso del file come

tipo XMLFILE in una colonna XML. La funzione codificherà il file di output in

iso-8859-1.

EXEC SQL BEGIN DECLARE SECTION;

struct { short len; char data[3000]; } xml_buff;

EXEC SQL END DECLARE SECTION;

EXEC SQL INSERT INTO sales_tab(ID, NAME, ORDER)

VALUES(’1234’, ’Sriram Srinivasan’,

XMLFileFromVarchar(:xml_buff, ’dxx_install/samples/extenders/db2xml

/xml/getstart.xml’, ’iso-8859-1’))

dove install_dxx è la directory in cui è stato installato XML Extender.

138 XML Extender - Amministrazione e programmazione

Page 149: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

La colonna ORDER nella tabella SALES_TAB è definita come tipo XMLFILE.

Funzione XMLVarcharFromFile()

Scopo:

Legge un documento XML da un file di server e lo restituisce come tipo

XMLVARCHAR.

Sintassi:

�� XMLVarcharFromFile ( nome_file , )

codifica_src ��

Parametri:

Tabella 26. Parametri di XMLVarcharFromFile

Parametro Tipo di dati Descrizione

fileName VARCHAR(512) Il nome file completo del

server.

codifica_src VARCHAR(100) La codifica del file di origine.

Risultati:

XMLVARCHAR

Esempio:

Il seguente esempio legge un documento XML da un file del server e lo inserisce

in una colonna XML come tipo XMLVARCHAR. La codifica del file del server è

specificata esplicitamente come ibm-808.

EXEC SQL INSERT INTO sales_tab(ID, NAME, ORDER)

VALUES(’1234’, ’Sriram Srinivasan’,

XMLVarcharFromFile(’install_dxx/samples/extenders/db2xml

/xml/getstart.xml’, ’ibm-808’))

dove install_dxx è la directory in cui è stato installato XML Extender.

In questo esempio, un record viene inserito nella tabella SALES_TAB. La funzione

XMLVarcharFromFile() importa il documento XML da un file specificato

esplicitamente con codifica ibm-808 nel database DB2 e lo memorizza come

XMLVARCHAR.

Funzioni di richiamo

Funzioni di richiamo in XML Extender

XML Extender fornisce una funzione di carico Content(), utilizzata per il richiamo.

Questa funzione di carico fa riferimento a una serie di funzioni di richiamo che

hanno lo stesso nome, ma che funzionano in maniera differente in base al punto in

cui i dati vengono richiamati. È inoltre possibile utilizzare le funzioni di casting

predefinite per convertire un UDT XML nel tipo di dati di base.

Le funzioni Content() consentono i seguenti tipi di richiamo:

Capitolo 8. Funzioni definite dall’utente di XML Extender 139

Page 150: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v Richiamo da una memoria esterna sul server su una variabile host sul client.

È possibile utilizzare Content() per richiamare un documento XML in un buffer

di memoria quando questo è memorizzato come file di server esterno. A questo

scopo, è possibile utilizzare Content(): retrieve da XMLFILE su un CLOB.

v Richiamo da una memoria interna su un file di server esterno

È possibile utilizzare Content() per richiamare un documento XML memorizzato

in DB2 e memorizzarlo su un file di server sul file system del server di database

DB2. Le seguenti funzioni Content() sono utilizzate per memorizzare

informazioni su file di server esterni:

– Content(): retrieve da XMLVARCHAR su un file di server esterno

– Content(): retrieval da XMLCLOB su un file di server esterno

Content(): retrieve da XMLFILE su un CLOB

Scopo:

Richiama i dati da un file di server e li memorizza in un CLOB LOCATOR.

Sintassi:

�� Contenuto ( xmlobj ) ��

Parametri:

Tabella 27. XMLFILE in un parametro CLOB

Parametro Tipo di dati Descrizione

xmlobj XMLFILE Il documento XML.

Risultati:

CLOB (clob_len) come LOCATOR

clob_len per il database DB2 è 2G.

Esempio:

Il seguente esempio richiama i dati da un file di server e li memorizza in un CLOB

locator.

char subsystem[20];

long retcode = 0, reason = 0;

extern "OS" { int DSNALI(char * functn, ...); }

extern "OS" short DSNTIAR(struct sqlca *sqlca,

error_struct *error_message,

long *data_len);

EXEC SQL BEGIN DECLARE SECTION;

SQL TYPE IS CLOB_LOCATOR xml_buff;

EXEC SQL END DECLARE SECTION;

/* Assegnare subsystem */

rc = DSNALI("OPEN ", subsystem, "PLANNAME",

&retcode, &reason);

if ( retcode != 0 )

{

/* visualizzare messaggio di errore */

goto exit;

}

140 XML Extender - Amministrazione e programmazione

Page 151: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

EXEC SQL DECLARE cl CURSOR FOR

SELECT Content(order) from sales_tab

WHERE sales_person = ’Sriram Srinivasan’

EXEC SQL OPEN c1;

do {

EXEC SQL FETCH c1 INTO :xml_buff;

if (SQLCODE != 0) {

break;

}

else {

/* eseguirlo con il doc XML nel buffer */

}

}

EXEC SQL CLOSE c1;

/* Scollegarlo dal sistema */

DSNALI("CLOSE ", "SYNC", &retcode, &reason);

if ( retcode != 0 ) {

/* visualizzare messaggio di errore */

}

La colonna ORDER nella tabella SALES_TAB è di tipo XMLFILE, quindi Content()

UDF richiama i dati da un file di server e li memorizza in un CLOB locator.

Attività correlate:

v “Aggiornamento ed eliminazione di dati in raccolte XML” a pagina 98

Content(): retrieve da XMLVARCHAR su un file di server

esterno

Scopo:

Richiama il contenuto XML memorizzato come tipo XMLVARCHAR e lo

memorizza in un file di server esterno.

Sintassi:

�� Contenuto ( xmlobj , filename , )

targetencoding ��

Importante: se un file con il nome specificato esiste già, la funzione del contenuto

ne sostituisce il contenuto.

Parametri:

Tabella 28. XMLVarchar per i parametri di file di server esterni

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR Il documento XML.

filename VARCHAR(512) Il nome file del server

completo.

targetencoding VARCHAR(100) La codifica del file di output.

Capitolo 8. Funzioni definite dall’utente di XML Extender 141

Page 152: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Risultati:

VARCHAR(512)

Esempio:

Il seguente esempio richiama il contenuto XML memorizzato come tipo

XMLVARCHAR e lo memorizza in un file esterno sul server. UDF codifica il file in

’ibm-808’.

CREATE table app1 (id int NOT NULL, order DB2XML.XMLVarchar);

INSERT into app1 values (1, ’<?xml version="1.0"?>

<!DOCTYPE SYSTEM "install_dxx/samples/extenders/db2xml/dtd/getstart.dtd"->

<Order key="1">

<Customer>

<Name>American Motors</Name>

<Email>[email protected]</Email>

</Customer>

<Part color="black">

<key>68</key>

<Quantity>36</Quantity>

<ExtendedPrice>34850.16</ExtendedPrice>

<Tax>6.000000e-02</Tax>

<Shipment>

<ShipDate>1998-08-19</ShipDate>

<ShipMode>AIR </ShipMode>

</Shipment>

<Shipment>

<ShipDate>1998-08-19</ShipDate>

<ShipMode>BOAT </ShipMode>

</Shipment>

</Part>

</Order>’);

SELECT DB2XML.Content(order,

’install_dxx/samples/extenders/db2xml/dad/getstart_column.dad’

, ’ibm-808’)

FROM app1 dove ID=1;

Attività correlate:

v “Metodo per richiamare un documento XML” a pagina 78

Riferimenti correlati:

v “Funzioni di richiamo in XML Extender” a pagina 139

Content(): retrieval da XMLCLOB su un file di server esterno

Scopo:

Richiama il contenuto XML memorizzato come tipo XMLCLOB e lo memorizza in

un file di server esterno.

Sintassi:

�� Contenuto ( xmlobj , filename , )

targetencoding ��

Importante: se un file con il nome specificato esiste già, la funzione del contenuto

ne sostituisce il contenuto.

142 XML Extender - Amministrazione e programmazione

Page 153: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Parametri:

Tabella 29. XMLCLOB per i parametri di file di server esterni

Parametro Tipo di dati Descrizione

xmlobj XMLCLOB come LOCATOR Il documento XML.

filename VARCHAR(512) Il nome file del server

completo.

targetencoding VARCHAR(100) La codifica del file di output.

Risultati:

VARCHAR(512)

Esempio:

Il seguente esempio richiama il contenuto XML memorizzato come tipo XMLCLOB

e lo memorizza in un file esterno sul server. UDF codifica il file in ’ibm-808’.

CREATE table app1 (id int NOT NULL, order DB2XML.XMLCLOB not logged);

INSERT into app1 values (1, ’<?xml version="1.0"?>

<!DOCTYPE SYSTEM "install_dxx/samples/extenders/db2xml/dtd/getstart.dtd"

->

<Order key="1">

<Customer>

<Name>American Motors</Name>

<Email>[email protected]</Email>

</Customer>

<Part color="black">

<key>68</key>

<Quantity>36</Quantity>

<ExtendedPrice>34850.16</ExtendedPrice>

<Tax>6.000000e-02</Tax>

<Shipment>

<ShipDate>1998-08-19</ShipDate>

<ShipMode>AIR </ShipMode>

</Shipment>

<Shipment>

<ShipDate>1998-08-19</ShipDate>

<ShipMode>BOAT </ShipMode>

</Shipment>

</Part>

</Order>’);

SELECT DB2XML.Content(order,

’install_dxx/samples/extenders/db2xml/xml/getstart.xml’, ’ibm-808’)

from app1 where ID=1;

Funzioni di estrazione

Funzioni di estrazione in XML Extender

Le funzioni di estrazione estraggono il contenuto di un elemento o il valore di un

attributo da un documento XML e restituiscono i tipi di dati SQL richiesti. XML

Extender fornisce una serie di funzioni di estrazione per diversi tipi di dati SQL.

Le funzioni di estrazione utilizzano due parametri di input. Il primo parametro è

l’UDT XML Extender, che può essere una delle UDT XML. Il secondo parametro è

Capitolo 8. Funzioni definite dall’utente di XML Extender 143

Page 154: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

il percorso della posizione che specifica l’elemento o l’attributo XML. Ogni

funzione di estrazione restituisce il valore or content specificato dal percorso della

posizione.

Poiché alcuni valori di elementi o attributi hanno più ricorrenze, le funzioni di

estrazione restituiscono un valore scalare o un valore di tabella, detti

rispettivamente funzione scalare e funzione tabella.

Negli esempi si assume che si utilizzi la shell di comandi del database DB2, in cui

non è necessario immettere “DB2” all’inizio di ogni comando.

extractInteger() ed extractIntegers()

Scopo:

Estrae il contenuto di un elemento o il valore di un attributo da un documento

XML e restituisce i dati come tipi INTEGER.

Sintassi:

Funzione scalare:

�� extractInteger ( xmlobj , path ) ��

Funzione tabella:

�� extractIntegers ( xmlobj , path ) ��

Parametri:

Tabella 30. Parametri di funzione extractInteger e extractIntegers

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR,

XMLFILE o

XMLCLOB

Il nome della colonna.

path VARCHAR Il percorso dell’elemento o

attributo.

Tipo restituito:

INTEGER

Codici di ritorno:

returnedInteger

Esempi:

Esempio di funzione scalare:

Nel seguente esempio, viene restituito un valore quando il valore di attributo della

chiave = ″1″. Il valore viene estratto come INTEGER. Negli esempi si presuppone

l’utilizzo dello shell di comandi DB2, in cui non è necessario immettere “DB2”

all’inizio di ogni comando.

CREATE TABLE t1(key INT);

INSERT INTO t1 values (

DB2XML.extractInteger(DB2XML.XMLFile(’/samples/extenders/db2xml

/xml/getstart.xml

’),

’/Order/Part[@color="black "]/key’));

SELECT * from t1;

144 XML Extender - Amministrazione e programmazione

Page 155: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Esempio di funzione tabella:

Nel seguente esempio, ogni chiave degli ordini di acquisto viene estratta come

INTEGER. Negli esempi si presuppone l’utilizzo dello shell di comandi DB2, in cui

non è necessario immettere “DB2” all’inizio di ogni comando.

SELECT *

FROM TABLE(

DB2XML.extractIntegers

(DB2XML.XMLFile(’/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Part/key’)) AS X;

Argomenti correlati:

v “Nomi di UDT e UDF per XML Extender” a pagina 136

v “Tipi di funzioni definite dall’utente di XML Extender” a pagina 135

Riferimenti correlati:

v “Funzioni di estrazione in XML Extender” a pagina 143

extractSmallint() ed extractSmallints()

Scopo:

Estrae il contenuto di un elemento o il valore di un attributo da un documento

XML e restituisce i dati come tipi SMALLINT.

Sintassi:

Funzione scalare:

�� extractSmallint ( xmlobj , path ) ��

Funzione tabella:

�� extractSmallints ( xmlobj , path ) ��

Parametri:

Tabella 31. Parametri di funzione extractSmallint e extractSmallints

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR,

XMLFILE o

XMLCLOB

Il nome della colonna.

path VARCHAR Il percorso dell’elemento o

attributo.

Tipo restituito:

SMALLINT

Codici di ritorno:

returnedSmallint

Esempi:

Esempio di funzione scalare:

Capitolo 8. Funzioni definite dall’utente di XML Extender 145

Page 156: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Nel seguente esempio, il valore di chiave in tutti gli ordini di acquisto viene

estratto come SMALLINT. Negli esempi si presuppone l’utilizzo dello shell di

comandi DB2, in cui non è necessario immettere “DB2” all’inizio di ogni comando.

CREATE TABLE t1(key INT);

INSERT INTO t1 values (

DB2XML.extractSmallint(db2xml.xmlfile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Part[@color="black "]/key’));

SELECT * from t1;

Esempio di funzione tabella:

Nel seguente esempio, il valore di chiave in tutti gli ordini di acquisto viene

estratto come SMALLINT. Negli esempi si presuppone l’utilizzo dello shell di

comandi DB2, in cui non è necessario immettere “DB2” all’inizio di ogni comando.

SELECT *

FROM TABLE(

DB2XML.extractSmallints(DB2XML.XMLFile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Part/key’)) AS X;

Argomenti correlati:

v “Nomi di UDT e UDF per XML Extender” a pagina 136

v “Tipi di funzioni definite dall’utente di XML Extender” a pagina 135

Riferimenti correlati:

v “Funzioni di estrazione in XML Extender” a pagina 143

extractDouble() ed extractDoubles()

Scopo:

Estrae il contenuto di un elemento o il valore di un attributo da un documento

XML e restituisce i dati come tipi DOUBLE.

Sintassi:

Funzione scalare:

�� extractDouble ( xmlobj , path ) ��

Funzione tabella:

�� extractDoubles ( xmlobj , path ) ��

Parametri:

Tabella 32. Parametri di funzione extractDouble e extractDoubles

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR,

XMLFILE o

XMLCLOB

Il nome della colonna.

path VARCHAR Il percorso dell’elemento o

attributo.

Tipo restituito:

146 XML Extender - Amministrazione e programmazione

Page 157: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

DOUBLE

Codici di ritorno:

returnedDouble

Esempi: Esempio di funzione scalare:

Il seguente esempio converte automaticamente il prezzo in un ordine da un tipo

DOUBLE a DECIMAL. Negli esempi si presuppone l’utilizzo dello shell di

comandi DB2, in cui non è necessario immettere “DB2” all’inizio di ogni comando.

CREATE TABLE t1(price DECIMAL(9,2));

INSERT INTO t1 values (

DB2XML.extractDouble(DB2XML.xmlfile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Part[@color="black"]/ExtendedPrice’));

SELECT * from t1;

Esempio di funzione tabella:

Nel seguente esempio, il valore di ExtendedPrice in ogni parte dell’ordine di

vendite viene estratto come DOUBLE. Negli esempi si presuppone l’utilizzo dello

shell di comandi DB2, in cui non è necessario immettere DB2 UDB all’inizio di

ogni comando.

SELECT CAST(RETURNEDDOUBLE AS DOUBLE)

FROM TABLE(

DB2XML.extractDoubles(DB2XML.XMLFile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Part/ExtendedPrice’)) AS X;

Argomenti correlati:

v “Nomi di UDT e UDF per XML Extender” a pagina 136

Riferimenti correlati:

v “Funzioni di estrazione in XML Extender” a pagina 143

extractReal() ed extractReals()

Scopo:

Estrae il contenuto di un elemento o il valore di un attributo da un documento

XML e restituisce i dati come tipi REAL.

Sintassi:

Funzione scalare:

�� extractReal ( xmlobj , path ) ��

Funzione tabella:

�� extractReals ( xmlobj , path ) ��

Parametri:

Tabella 33. Parametri di funzione extractReal e extractReals

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR,

XMLFILE o

XMLCLOB

Il nome della colonna.

Capitolo 8. Funzioni definite dall’utente di XML Extender 147

Page 158: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 33. Parametri di funzione extractReal e extractReals (Continua)

Parametro Tipo di dati Descrizione

path VARCHAR Il percorso dell’elemento o

attributo.

Tipo restituito:

REAL

Codici di ritorno:

returnedReal

Esempi:

Esempio di funzione scalare:

Nel seguente esempio, il valore di ExtendedPrice viene estratto come REAL. Negli

esempi si presuppone l’utilizzo dello shell di comandi DB2, in cui non è necessario

immettere “DB2” all’inizio di ogni comando.

CREATE TABLE t1(price DECIMAL(9,2));

INSERT INTO t1 values (

DB2XML.extractReal(DB2XML.xmlfile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Part[@color="black"]/ExtendedPrice’));

SELECT * from t1;

Esempio di funzione tabella:

Nel seguente esempio, il valore di ExtendedPrice viene estratto come REAL. Negli

esempi si presuppone l’utilizzo dello shell di comandi DB2, in cui non è necessario

immettere “DB2” all’inizio di ogni comando.

SELECT CAST(RETURNEDREAL AS REAL)

FROM TABLE(

DB2XML.extractReals(DB2XML.XMLFile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Part/ExtendedPrice’)) AS X;

Argomenti correlati:

v “Nomi di UDT e UDF per XML Extender” a pagina 136

v “Tipi di funzioni definite dall’utente di XML Extender” a pagina 135

Riferimenti correlati:

v “Funzioni di estrazione in XML Extender” a pagina 143

v “Codici di ritorno delle UDF di XML Extender” a pagina 264

extractChar() ed extractChars()

Scopo:

Estrae il contenuto di un elemento o il valore di un attributo da un documento

XML e restituisce i dati come tipi CHAR.

Sintassi:

Funzione scalare:

�� extractChar ( xmlobj , path ) ��

Funzione tabella:

148 XML Extender - Amministrazione e programmazione

Page 159: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

�� extractChars ( xmlobj , path ) ��

Parametri:

Tabella 34. Parametri di funzione extractChar e extractChars

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR,

XMLFILE o

XMLCLOB

Il nome della colonna.

path VARCHAR Il percorso dell’elemento o

attributo.

Tipo restituito:

CHAR

Codici di ritorno:

returnedChar

Esempi:

Esempio di funzione scalare:

Nel seguente esempio, il valore di Name viene estratto come CHAR. Negli esempi

si presuppone l’utilizzo dello shell di comandi DB2, in cui non è necessario

immettere “DB2” all’inizio di ogni comando.

CREATE TABLE t1(name char(30));

INSERT INTO t1 values (

DB2XML.extractChar(DB2XML.xmlfile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Customer/Name’));

SELECT * from t1;

Esempio di funzione tabella:

Nel seguente esempio, il valore di Color viene estratto come CHAR. Negli esempi

si presuppone l’utilizzo dello shell di comandi DB2, in cui non è necessario

immettere “DB2” all’inizio di ogni comando.

SELECT *

FROM TABLE(

DB2XML.extractChars(DB2XML.XMLFile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Part/@color’)) AS X;

Riferimenti correlati:

v “Funzioni di estrazione in XML Extender” a pagina 143

extractVarchar() ed extractVarchars()

Scopo:

Estrae il contenuto di un elemento o il valore di un attributo da un documento

XML e restituisce i dati come tipi VARCHAR.

Sintassi:

Funzione scalare:

�� extractVarchar ( xmlobj , path ) ��

Capitolo 8. Funzioni definite dall’utente di XML Extender 149

Page 160: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Funzione tabella:

�� extractVarchars ( xmlobj , path ) ��

Parametri:

Tabella 35. Parametri di funzione extractVarchar e extractVarchars

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR,

XMLFILE o

XMLCLOB

Il nome della colonna.

path VARCHAR Il percorso dell’elemento o

attributo.

Tipo restituito:

VARCHAR(4K)

Codici di ritorno:

returnedVarchar

Esempi:

Esempio di funzione scalare:

In un database con più di 1000 documenti XML memorizzati nella colonna ORDER

nella tabella SALES_TAB, si può scegliere di individuare tutti i clienti che hanno

ordinato prodotti con un ExtendedPrice superiore a 2500.00. La seguente istruzione

SQL utilizza l’UDF di estrazione nella clausola SELECT:

SELECT extractVarchar(Order, ’/Order/Customer/Name’) from sales_order_view

WHERE price > 2500.00

Negli esempi si presuppone l’utilizzo dello shell di comandi DB2, in cui non è

necessario immettere “DB2” all’inizio di ogni comando. L’UDF extractVarchar()

richiama la colonna ORDER come input e il percorso /Order/Customer/Name come

identificativo di selezione. UDF restituisce i nomi dei clienti. Con la clausola

WHERE, la funzione di estrazione valuta tali ordini con un ExtendedPrice

maggiore di 2500.00.

Esempio di funzione scalare:

Nel seguente esempio, il valore di Name viene estratto come VARCHAR. Negli

esempi si presuppone l’utilizzo dello shell di comandi DB2, in cui non è necessario

immettere “DB2” all’inizio di ogni comando.

CREATE TABLE t1(name varchar(30));

INSERT INTO t1 values (

DB2XML.extractVarchar(DB2XML.xmlfile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Customer/Name’));

SELECT * from t1;

Esempio di funzione tabella:

Nel seguente esempio, il valore di Color viene estratto come VARCHAR. Negli

esempi si presuppone l’utilizzo dello shell di comandi DB2, in cui non è necessario

immettere “DB2” all’inizio di ogni comando.

SELECT*

FROM TABLE(

DB2XML.extractVarchars(DB2XML.XMLFile(’install_dxx

/samples/xml/getstart.xml’),

’/Order/Part/@color’)) AS X;

150 XML Extender - Amministrazione e programmazione

Page 161: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Argomenti correlati:

v “Nomi di UDT e UDF per XML Extender” a pagina 136

v “Tipi di funzioni definite dall’utente di XML Extender” a pagina 135

Riferimenti correlati:

v “Funzioni di estrazione in XML Extender” a pagina 143

v “Codici di ritorno delle UDF di XML Extender” a pagina 264

extractCLOB() ed extractCLOBs()

Scopo:

Estrae un frammento di documenti XML, con la markup attributo ed elemento e il

contenuto di attributi ed elementi, inclusi gli elementi secondari. Questa funzione

differisce dalle altre funzioni di estrazione, che restituiscono solo il contenuto di

elementi ed attributi. Le funzioni extractClob(s) vengono utilizzate per estrarre i

frammenti di documenti, mentre extractVarchar(s) e extractChar(s) vengono

utilizzati per estrarre valori semplici.

Sintassi:

Funzione scalare:

�� extractCLOB ( xmlobj , path ) ��

Funzione tabella:

�� extractCLOBs ( xmlobj , path ) ��

Parametri:

Tabella 36. Parametri di funzione extractCLOB e extractCLOBs

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR,

XMLFILE o

XMLCLOB

Il nome della colonna.

path VARCHAR Il percorso dell’elemento o

attributo.

Tipo restituito:

CLOB(10K)

Codici di ritorno:

returnedCLOB

Esempi:

Esempio di funzione scalare:

In questo esempio, tutte le tag e il contenuto dell’elemento name vengono estratti

da un ordine di acquisto. Negli esempi si presuppone l’utilizzo dello shell di

comandi DB2, in cui non è necessario immettere “DB2” all’inizio di ogni comando.

CREATE TABLE t1(name DB2XML.xmlclob);

INSERT INTO t1 values (

DB2XML.extractClob(DB2XML.xmlfile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Customer/Name’));

SELECT * from t1;

Capitolo 8. Funzioni definite dall’utente di XML Extender 151

Page 162: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Esempio di funzione tabella:

In questo esempio, tutti gli attributi di color vengono estratti da un ordine di

acquisto. Negli esempi si presuppone l’utilizzo dello shell di comandi DB2, in cui

non è necessario immettere “DB2” all’inizio di ogni comando.

SELECT *

FROM TABLE(

DB2XML.extractCLOBs(DB2XML.XMLFile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Part/@color’)) AS X;

Argomenti correlati:

v “Tipi di funzioni definite dall’utente di XML Extender” a pagina 135

Riferimenti correlati:

v “Funzioni di estrazione in XML Extender” a pagina 143

extractDate() ed extractDates()

Scopo:

Estrae il contenuto di un elemento o il valore di un attributo da un documento

XML e restituisce i dati come tipi DATE. La data deve avere il formato:

AAAA-MM-GG.

Sintassi:

Funzione scalare:

�� extractDate ( xmlobj , path ) ��

Funzione tabella:

�� extractDates ( xmlobj , path ) ��

Parametri:

Tabella 37. Parametri di funzione extractDate e extractDates

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR,

XMLFILE o

XMLCLOB

Il nome della colonna.

path VARCHAR Il percorso dell’elemento o

attributo.

Tipo restituito:

DATE

Codici di ritorno:

returnedDate

Esempi:

Esempio di funzione scalare:

Nel seguente esempio, il valore di ShipDate viene estratto come DATE. Negli

esempi si presuppone l’utilizzo dello shell di comandi DB2, in cui non è necessario

immettere “DB2” all’inizio di ogni comando.

152 XML Extender - Amministrazione e programmazione

Page 163: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

CREATE TABLE t1(shipdate DATE);

INSERT INTO t1 values (

DB2XML.extractDate(DB2XML.xmlfile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Part[@color="red "]/Shipment/ShipDate’));

SELECT * from t1;

Esempio di funzione tabella:

Nel seguente esempio, il valore di ShipDate viene estratto come DATE.

SELECT *

FROM TABLE(

DB2XML.extractDates(DB2XML.XMLFile(’install_dxx

/samples/extenders/db2xml/xml/getstart.xml’),

’/Order/Part[@color="black "]/Shipment/ShipDate’)) AS X;

Argomenti correlati:

v “Tipi di funzioni definite dall’utente di XML Extender” a pagina 135

Riferimenti correlati:

v “Funzioni di estrazione in XML Extender” a pagina 143

v “Codici di ritorno delle UDF di XML Extender” a pagina 264

extractTime() ed extractTimes()

Scopo:

Estrae il contenuto di un elemento o il valore di un attributo da un documento

XML e restituisce i dati come tipi TIME.

Sintassi:

Funzione scalare:

�� extractTime ( xmlobj , path ) ��

Funzione tabella:

�� extractTimes ( xmlobj , path ) ��

Parametri:

Tabella 38. Parametri di funzione extractTime e extractTimes

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR,

XMLFILE o

XMLCLOB

Il nome della colonna.

path VARCHAR Il percorso dell’elemento o

attributo.

Tipo restituito:

TIME

Codici di ritorno:

returnedTime

Esempi:

Negli esempi si presuppone l’utilizzo dello shell di comandi DB2, in cui non è

Capitolo 8. Funzioni definite dall’utente di XML Extender 153

Page 164: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

necessario immettere “DB2” all’inizio di ogni comando.

Esempio di funzione scalare:

CREATE TABLE t1(testtime TIME);

INSERT INTO t1 values (

DB2XML.extractTime(DB2XML.XMLCLOB(

’<stuff><data>11.12.13</data></stuff>’), ’//data’));

SELECT * from t1;

Esempio di funzione tabella:

select *

from table(

DB2XML.extractTimes(DB2XML.XMLCLOB(

’<stuff><data>01.02.03</data><data>11.12.13</data></stuff>’),

’//data’)) as x;

Argomenti correlati:

v “Nomi di UDT e UDF per XML Extender” a pagina 136

v “Tipi di funzioni definite dall’utente di XML Extender” a pagina 135

Riferimenti correlati:

v “Funzioni di estrazione in XML Extender” a pagina 143

extractTimestamp() ed extractTimestamps()

Scopo:

Estrae il contenuto di un elemento o il valore di un attributo da un documento

XML e restituisce i dati come tipi TIMESTAMP.

Sintassi:

Funzione scalare:

�� extractTimestamp ( xmlobj , path ) ��

Funzione tabella:

�� extractTimestamps ( xmlobj , path ) ��

Parametri:

Tabella 39. Parametri di funzione extractTimestamp e extractTimestamps

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR,

XMLFILE o

XMLCLOB

Il nome della colonna.

path VARCHAR Il percorso dell’elemento o

attributo.

Tipo restituito:

TIMESTAMP

Codici di ritorno:

returnedTimestamp

Esempi:

154 XML Extender - Amministrazione e programmazione

Page 165: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Negli esempi si presuppone l’utilizzo dello shell di comandi DB2, in cui non è

necessario immettere “DB2” all’inizio di ogni comando.

Esempio di funzione scalare:

CREATE TABLE t1(testtimestamp TIMESTAMP);

INSERT INTO t1 values (

DB2XML.extractTimestamp(DB2XML.XMLCLOB(

’<stuff><data>2003-11-11-11.12.13.888888</data></stuff>’),

’//data’));

SELECT * from t1;

Esempio di funzione tabella:

select * from

table(DB2XML.extractTimestamps(DB2XML.XMLClob(

’<stuff><data>2003-11-11-11.12.13.888888

</data><data>2003-12-22-11.12.13.888888</data></stuff>’),

’//data’)) as x;

XML Extender normalizza automaticamente la data/ora estratta dai documenti

XML per renderla comaptibile con il formato data/ora DB2, se necessario. La

data/ora viene normalizzata nel formato aaaa-mm-gg-hh.mm.ss.nnnnnn o

aaaa-mm-gg-hh mm.ss.nnnnnn. Ad esempio:

2003-1-11-11.12.13

verrà normalizzata in:

2003-01-11-11.12.13.000000

Argomenti correlati:

v “Nomi di UDT e UDF per XML Extender” a pagina 136

v “Tipi di funzioni definite dall’utente di XML Extender” a pagina 135

Riferimenti correlati:

v “Funzioni di estrazione in XML Extender” a pagina 143

v “Codici di ritorno delle UDF di XML Extender” a pagina 264

Funzioni di aggiornamento in XML Extender

La funzione Update() aggiorna un elemento o il valore di un attributo specificato

in uno o più documenti XML memorizzati nella colonna XML. È inoltre possibile

utilizzare le funzioni di casting predefinite per convertire un tipo di base SQL

nell’UDT XML.

Scopo

Utilizza il nome della colonna di una UDT XML, un percorso di posizione e una

stringa del valore di aggiornamento e restituisce una UDT XML che è uguale al

primo parametro di input. Con la funzione Update(), è possibile specificare

l’elemento o l’attributo che deve essere aggiornato.

Sintassi

�� Aggiornamento ( xmlobj , percorso , valore ) ��

Capitolo 8. Funzioni definite dall’utente di XML Extender 155

Page 166: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Parametri

Tabella 40. Parametri della funzione Update dell’UDF

Parametro Tipo di dati Descrizione

xmlobj XMLVARCHAR, XMLCLOB

as LOCATOR

Il nome della colonna.

path VARCHAR Il percorso della posizione

dell’elemento o dell’attributo.

value VARCHAR La stringa di aggiornamento.

Limitazione: la funzione

Update non ha un’opzione

per disabilitare l’escape

dell’output; l’output di un

extractClob (che è un

frammento con tag) non può

essere inserito con questa

funzione. Utilizzare solo

valori di testo.

Limitazione: tenere presente che l’UDF Update supporta i percorsi di posizione

che hanno predicati con attributi, ma non elementi. Ad esempio, il seguente

predicato è supportato:

’/Order/Part[@color="black "]/ExtendedPrice’

Il seguente predicato non è supportato:

’/Order/Part/Shipment/[Shipdate < "11/25/00"]’

Tipo restituito

Tipo di dati Tipo di ritorno

XMLVARCHAR XMLVARCHAR

XMLCLOB come LOCATOR XMLCLOB

Esempi

Il seguente esempio aggiorna l’ordine di acquisto gestito dal responsabile delle

vendite (salesperson) Sriram Srinivasan.

UPDATE sales_tab

set order = db2xml.update(order, ’/Order/Customer/Name’, ’IBM’)

WHERE sales_person = ’Sriram Srinivasan’

In questo esempio, il contenuto di /Order/Customer/Name viene aggiornato in IBM.

I seguenti esempi mostrano le istanze di un documento XML prima e dopo un

aggiornamento.

Tabella 41. Documenti XML prima e dopo un aggiornamento

Esempio 1:

Prima:

156 XML Extender - Amministrazione e programmazione

Page 167: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 41. Documenti XML prima e dopo un aggiornamento (Continua)

<?xml version=’1.0’ encoding=’utf-8’ standalone="yes"?>

<!DOCTYPE book PUBLIC "public.dtd" "system.dtd">

<?pitarget option1=’value1’ option2=’value2’?>

<!-- comment -->

<book>

<chapter id="1" date=’07/01/1997’>

<!-- first section -->

<section>This is a section in Chapter

One.</section>

</chapter>

<chapter id="2" date="01/02/1997">

<section>This is a section in Chapter

Two.</section>

<footnote>A footnote in Chapter Two is

here.</footnote>

</chapter>

<price date="12/22/1998" time="11.12.13"

timestamp="1998-12-22-11.12.13.888888">

38.281</price>

</book>

v Contiene spazi

nella

dichiarazione

XML

v Specifica

un’istruzione di

elaborazione

v Contiene un

commento

all’esterno del

nodo root

v Specifica

PUBLIC

ExternalID

v Contiene un

commento

all’interno del

nodo root

Dopo:

<?xml version=’1.0’ encoding=’utf-8’ standalone=’yes’?>

<!DOCTYPE book PUBLIC "public.dtd" "system.dtd">

<?pitarget option1=’value1’ option2=’value2’?>

<book>

<chapter id="1" date="07/01/2003">

<!-- first section -->

<section>This is a section in Chapter

One.</section>

</chapter>

<chapter id="2" date="01/02/2003">

<section>This is a section in Chapter

Two.</section>

<footnote>A footnote in Chapter Two

is here.</footnote>

</chapter>

<price date="12/22/2003" time="11.12.13"

timestamp="2003-12-22-11.12.13.888888">

60.02</price>

</book>

v Lo spazio

all’interno della

markup è stato

eliminato

v L’istruzione di

elaborazione è

stata conservata

v Il commento

all’esterno del

nodo root non è

stato conservato

v PUBLIC

ExternalID è

stato conservato

v Il commento

all’interno del

nodo root è

stato conservato

v Il valore

modificato è il

valore

dell’elemento

<price>

Esempio 2:

Prima:

<?xml version=’1.0’ ?>

<!DOCTYPE book>

<!-- comment -->

<book>

...

</book>

Contiene la

dichiarazione

DOCTYPE senza

un ExternalID o

una serie

secondaria DTD

interna. Non

supportato.

Capitolo 8. Funzioni definite dall’utente di XML Extender 157

Page 168: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 41. Documenti XML prima e dopo un aggiornamento (Continua)

Dopo:

<?xml version=’1.0’?>

<book>

...

</book>

La dichiarazione

DOCTYPE non è

riportata dal

parser XML e non

è stata conservata.

Esempio 3:

Prima:

<?xml version=’1.0’ ?>

<!DOCTYPE book [ <!ENTITY myDog "Spot"> ]>

<!-- comment -->

<book>

<chapter id="1" date=’07/01/1997’>

<!-- first section -->

<section>This is a section in Chapter

One about my dog &;myDog;.</section>

...

</chapter>

...

</book>

v Contiene spazi

nella markup

v Specifica serie

secondarie DTD

interne

v Specifica le

entità nel nodo

di testo

Dopo:

<?xml version=’1.0’?>

<!DOCTYPE book>

<book>

<chapter id="1" date="07/01/1997">

<!-- first section -->

<section>This is a section in Chapter

One about my dog Spot.</section>

...

</chapter>

...

</book>

v Lo spazio

all’interno della

markup è stato

eliminato

v La serie

secondaria DTD

interna non è

stata conservata

v L’entità nel

nodo di testo è

stata risolta e

restituita

Utilizzo

Quando si utilizza la funzione Update per modificare un valore in uno o più

documenti XML, questa sostituisce i documenti XML all’interno della colonna

XML. In base all’output del parser XML, alcune parti del documento originale

vengono conservate mentre altre vengono perse o modificate. Le seguenti sezioni

descrivono il modo in cui il documento viene elaborato e forniscono esempi

sull’aspetto dei documenti prima e dopo gli aggiornamenti.

Modalità di elaborazione del documento da parte della

funzione Update()

Quando la funzione Update() sostituisce i documenti XML, questa deve ricostruire

il documento in base all’output del parser XML. La sezione Tabella 42 a pagina 159

descrive il modo in cui sono gestite le varie parti del documento e riporta degli

esempi.

158 XML Extender - Amministrazione e programmazione

Page 169: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 42. Regole della funzione Update

Tipo di

elemento o di

nodo

Esempio di codice del documento XML Stato dopo l’aggiornamento

Dichiarazione

XML

<?xml version=’1.0’

encoding=’utf-8’

standalone=’yes’ >

La dichiarazione XML viene

conservata:

v Le informazioni sulla

versione vengono

conservate.

v La dichiarazione di codifica

viene conservate e viene

visualizzata quando

specificata nel documento

originale.

v La dichiarazione di

autonomia viene conservata

viene visualizzata quando

specificata nel documento

originale.

v Dopo l’aggiornamento, le

virgolette singole sono

utilizzate per delineare i

valori.

Dichiarazione DOCTYPE La dichiarazione del tipo di

documento viene conservata:

v Il nome dell’elemento root è

supportato.

v Gli ExternalID pubblici e di

sistema sono conservati e

vengono visualizzati quando

specificati nel documento

originale.

v La serie secondaria DTD

interna non viene conservata.

Le entità vengono sostituite,

i valori predefiniti per gli

attributi sono elaborati e

vengono visualizzati nei

documenti di output.

v Dopo l’aggiornamento,

vengono utilizzate le

virgolette doppie per

delineare i valori degli URI

pubblici e di sistema.

v Il parser XML4c corrente

non riporta una

dichiarazione XML che non

contiene un ExternalID o

una serie secondaria DTD

interna. In seguito

all’aggiornamento, la

dichiarazione DOCTYPE

risulterà mancante.

<!DOCTYPE books SYSTEM

"http://dtds.org/books.dtd" >

<!DOCTYPE books PUBLIC

"local.books.dtd" "http://dtds.org/books.dtd" >

<!DOCTYPE books>

-Any of

<!DOCTYPE books

( S ExternalID ) ?

[ internal-dtd-subset ] >

-Such as

<!DOCTYPE books

[ <!ENTITY mydog "Spot"> ] >?

[ internal-dtd-subset ] >

Capitolo 8. Funzioni definite dall’utente di XML Extender 159

Page 170: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 42. Regole della funzione Update (Continua)

Tipo di

elemento o di

nodo

Esempio di codice del documento XML Stato dopo l’aggiornamento

Istruzioni di

elaborazione

<?xml-stylesheet

title="compact"

href="datatypes1.xsl"

type="text/xsl"?>

Le istruzioni di elaborazione

vengono conservate.

Commenti <!-- comment --> I commenti all’interno

dell’elemento root vengono

conservati.

I commenti all’esterno

dell’elemento root vengono

eliminati.

Elementi <books>

contenuto

</books>

Gli elementi vengono

conservati.

Attributi id=’1’ date="01/02/2003" Gli attributi degli elementi

vengono conservati.

v Dopo l’aggiornamento,

vengono utilizzate le

virgolette doppie per

delineare i valori.

v I dati all’interno degli

attributi vengono persi.

v Le entità vengono sostituite.

Nodi di testo This section is about

my dog &mydog;.

I nodi di testo (contenuto

dell’elemento) vengono

conservati.

v I dati all’interno dei nodi di

testo vengono persi.

v Le entità vengono sostituite.

Ricorrenze multiple

Quando un percorso della posizione viene fornito nell’UDF Update(), il contenuto

di ogni elemento o attributo con un percorso corrispondente viene aggiornato con

il valore fornito. Ciò significa che se il documento ha più percorsi di posizione, la

funzione Update() sostituisce i valori esistenti con il valore fornito nel parametro

value.

È possibile specificare un predicato nel parametro path per fornire percorsi di

posizioni distinti per impedire aggiornamenti non intenzionali. L’UDF Update()

supporta i percorsi delle posizioni che hanno predicati con attributi, ma non

elementi.

160 XML Extender - Amministrazione e programmazione

Page 171: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

funzioni di convalida

DB2 XML Extender offre due UDF (user defined function) che convalidano i

documenti XML rispetto a un DTD o a uno schema XML. Un elemento in un

documento XML è valido secondo uno schema specificato, se vengono soddisfatte

le regole del tipo di elemento associato. Se tutti gli elementi sono validi, l’intero

documento è valido.

Le funzioni di convalida restituiscono 1 se il documento è valido o 0 e scrivono un

messaggio di errore nel file di traccia se il documento non è valido. Le funzioni

sono:

db2xml.svalidate:

Convalida l’istanza di un documento XML rispetto allo schema specificato.

db2xml.dvalidate:

Convalida l’istanza di un documento XML rispetto al DTD specificato.

Funzione SVALIDATE()

Questa funzione convalida un documento XML rispetto a uno schema specificato

(o a quello specificato nel documento XML) e restituisce 1 se il documento è

valido, 0 se non lo è. Questa funzione presuppone la presenza di uno schema e di

un documento XML sul file system o come CLOB in DB2.

Prima di eseguire la funzione SVALIDATE, verificare che XML Extender sia

abilitato con il proprio database, immettendo il seguente comando:

dxxadm enable_db mydbname

Se la convalida del documento XML non riesce, viene scritto un messaggio di

errore nel file di traccia di XML Extender. Abilitare la traccia prima di eseguire il

comando SVALIDATE.

Sintassi

�� SVALIDATE ( xmlobj )

,

schemadoc

schemalocation ��

Parametri

Tabella 43. I parametri SVALIDATE

Parametro Tipo di dati Descrizione

xmlobj

Obbligatorio. Consentito solo

un xmlobj.

VARCHAR(256) Il nome file completo del

documento XML da

verificare.

CLOB(2G) La colonna XML che contiene

il documento da verificare.

schemadoc

(facoltativo). Nessun valore

predefinito. Consentito solo

un schemadoc.

VARCHAR(256) Il nome file completo del

documento dello schema

(senza namespace di

destinazione) con cui

convalidare il documento

XML.

Capitolo 8. Funzioni definite dall’utente di XML Extender 161

Page 172: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 43. I parametri SVALIDATE (Continua)

Parametro Tipo di dati Descrizione

CLOB(2G) Colonna XML che contiene lo

schema (senza namespace di

destinazione) con cui

convalidare il documento

XML.

schemalocation

Facoltativo. Nessun valore

predefinito. Non consentito

se nonamespace schemadoc è

un tipo di dati CLOB.

VARCHAR(256) coppia di nome dile del

documento completo e URI

del namespace da utilizzare

per la convalida. È possibile

specificare una o più coppie

separate da uno spazio.

Esempi

Esempio 1: questo esempio convalida equiplog2001.xml rispetto allo schema

specificato all’interno del documento.

db2 values db2xml.svalidate("/home/jean/xml/equiplog2001.xml")

Esempio 2: questo esempio convalida un documento XML utilizzando lo schema

specificato e sia lo schema che il documento vengono memorizzati nelle tabelle

database DB2.

db2 select db2xml.svalidate(doc,schema) from equiplogs where id=1

Esempio 3:

Questo esempio convalida il documento XML nella colonna CLOB xml in a_table

rispetto allo schema nonamespace schema1.xsd specificato e all’elenco di schemi

namespace, schema2.xsd e schema3.xsd, associati ai namespace di destinazione

http://ns1 e http://ns2:

select db2xml.svalidate(

xml,

'xsd/schema1.xsd',

'http://ns1 /dxxsamples/schema2.xsd

http://ns2 /dxxsamples/schema3.xsd')

from a_table where id=2

Esempio 4:

Questo esempio convalida test.xml rispetto all’elenco specificato di schemi,

schema1.xsd e schema2.xsd, associati ai namespace di destinazione http://ns1 e

http://ns2.

db2 values db2xml.svalidate(

'/dxxsamples/xml/test.xml',

' ',

'http://ns1 /dxxsamples/xsd/schema1.xsd http://ns2

/dxxsamples/xsd/schema2.xsd')

Funzione DVALIDATE()

Questa funzione convalida un documento XML rispetto a un DTD specificato (o a

quello specificato nel documento XML) e restituisce 1 se il documento è valido, 0

se non lo è. Questa funzione presuppone la presenza di un DTD e di un

documento XML sul file system o come CLOB in DB2.

162 XML Extender - Amministrazione e programmazione

Page 173: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Prima di eseguire la funzione DVALIDATE, verificare che XML Extender sia

abilitato con il proprio database, immettendo il seguente comando:

dxxadm enable_db mydbname

Se la convalida del documento XML non riesce, viene scritto un messaggio di

errore nel file di traccia di XML Extender. Abilitare la traccia prima di eseguire il

comando DVALIDATE.

Sintassi

�� DVALIDATE ( xmlobj )

,

dtddoc ��

Parametri

Tabella 44. I parametri DVALIDATE

Parametro Tipo di dati Descrizione

xmlobj VARCHAR(256) Il percorso completo del

documento XML da

verificare.

CLOB(2G) La colonna XML che contiene

il documento da verificare.

dtddoc VARCHAR(256) Percorso completo del

documento DTD.

CLOB(2G) Colonna XML che contiene il

DTD, che deriva dalla tabella

DTD_REF o da una tabella

regolare.

Esempi

Esempio 1: questo esempio convalida equiplog2001.xml rispetto al DTD specificato

all’interno del documento.

db2 values db2xml.dvalidate(/home/jean/xml/equiplog2001.xml)

Esempio 2: questo esempio convalida un documento XML utilizzando il DTD

specificato e sia il DTD che il documento si trovano nel file system.

db2 values db2xml.dvalidate (c:/xml/equiplog.xml,c:/xml/dtds/equip.dtd)

Esempio 3: questo esempio convalida un documento XML utilizzando il DTD

specificato e sia il DTD che il documento vengono memorizzati nelle tabelle

database DB2.

db2 values db2xml.dvalidate (doc,dtdid) from equiplogs, db2xml.dtd_ref \

where dtdid="equip.dtd"

Riferimenti correlati:

v “Avvio della traccia per XML Extender” a pagina 263

Capitolo 8. Funzioni definite dall’utente di XML Extender 163

Page 174: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

164 XML Extender - Amministrazione e programmazione

Page 175: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 9. File DAD (document access definition)

Creazione di un file DAD per colonne XML

Tale attività è parte dell’attività più grande di definizione ed abilitazione di una

colonna XML.

Per accedere ai relativi dati XML ed abilitare le colonne per i dati XML in una

tabella XML, è necessario definire un file DAD (document access definition). Tale

file definisce gli attributi e gli elementi chiave dei relativi dati che si devono

ricercare nella colonna. Per le colonne XML, il file DAD principalmente specifica

come devono essere indicizzati i documenti memorizzati al suo interno. Il file DAD

inoltre, specifica un DTD o schema da utilizzare per la convalida dei documenti

inseriti nella colonna XML. I file DAD sono memorizzati come un tipo di dati

CLOB, e la loro dimensione limite è 100 KB.

Prerequisiti:

Prima di creare il file DAD file, è necessario:

v Decidere quali elementi o attributi si prevede di utilizzare spesso nella propria

ricerca. Gli elementi o attributi specificativengono estratti nelle tabelle laterali

per le ricerche rapide da XML Extender.

v Definire il percorso della posizione per rappresentare ogni elemento o attributo

indicizzato in una tabella laterale. E’ necessario inoltre specificare il tipo di dati

in cui si desidera che l’elemento o l’attributo siano convertiti.

Procedura:

Per creare un file DAD:

1. Creare un nuovo documento in un editor di testo e digitare la seguente sintassi:

<?XML version="1.0"?>

<!DOCTYPE DAD SYSTEM <"path/dtd/dad.dtd">.

″path/dtd/dad.dtd ″ è il percorso e il nome del file del DTD per il file DAD. Viene

fornito un DTD in install_dxx\samples\extenders\db2xml\dtd

2. Inserire le tag DAD dopo le righe dal passaggio 1.

<DAD>

</DAD>

Questo elemento conterrà tutti gli altri elementi.

3. Specificare una convalida per il documento e la colonna:

v Se si desidera convalidare l’intero documento XML rispetto ad un DTD o

schema prima che si inserito nel database:

– Inserire la seguente tag per convalidare il documento utilizzando un DTD:

<dtdid>dtd_name.dtd</dtdid>

– Inserire la seguente tag per convalidare il documento utilizzando uno

schema:

<schemabindings>

<nonamespacelocation location="path/schema_name.xsd"/>

</schemabindings>

© Copyright IBM Corp. 1999 - 2006 165

Page 176: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

– Per convalidare il documento inserire la seguente tag:

<validation>YES</validation>

Altrimenti, inserire la seguente tag:

<validation>NO</validation>

4. Inserire le tag <Xcolumn> </Xcolumn> per specificare che si stanno utilizzando le

colonne XML come metodo di accesso e memorizzazione per i relativi dati

XML.

5. Specificare le tabelle laterali. Per ogni tabella laterale che si desidera creare:

a. Specificare una tag <table></table> . Ad esempio:

<table name="person_names">

</table>

b. Nelle tag della tabella, inserire una tag <column> per ogni colonna che si

desidera che la tabella laterale contenga. Ogni colonna ha quattro attributi:

name, type, path e multi_occurrence.

Esempio:

<table name="person_names">>

<column name ="fname"

type="varchar(50)"

path="/person/firstName"

multi_occurrence="NO"/>

<column name ="lname"

type="varchar(50)"

path="/person/lastName"

multi_occurrence="NO"/>

</table>

Dove:

name Specifica il nome della colonna creata nella tabella laterale.

type Indica il tipo di dati SQL nella tabella laterale per ogni elemento o

attributo indicizzato

path Specifica il percorso della posizione nel documento XML per ogni

elemento o attributo da indicizzare

multi_occurrence

Indica se l’elemento o l’attributo riferito dall’attributo del percorso

possa presentarsi più di una volta nel documento XML. I possibili

valori per multi_occurrence sono YES o NO. Se il valore è NO,

allora le colonne multiple possono essere specificate per tabella. Se

il valore è YES, è possibile specificare solo una colonna nella tabella

laterale.6. Salvare il relativo file con un’estensione DAD.

Il seguente esempio mostra un file DAD completo:

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "c:\install_dxx\samples\extenders\db2xml\dtd\dad.dtd">

<DAD>

<dtdid>C:\SG246130\code\person.dtd</dtdid>

<validation>YES</validation>

<Xcolumn>

<table name="person_names">

<column name="fname"

type="varchar(50)"

path="/person/firstName"

multi_occurrence="NO"/>

<column name="lname"

166 XML Extender - Amministrazione e programmazione

Page 177: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

type="varchar(50)"

path="/person/lastName"

multi_occurrence="NO"/>

</table>

<table name="person_phone_number">

<column name="pnumber"

type="varchar(20)"

path="/person/phone/number"

multi_occurrence="YES"/>

</table>

<table name="person_phone_number">

<column name="pnumber"

type="varchar(20)"

path="/person/phone/number"

multi_occurrence="YES"/>

</table>

<table name="person_phone_type">

<column name="ptype"

type="varchar(20)"

path="/person/phone/type"

multi_occurrence="YES"/>

</table>

<Xcolumn>

</DAD>

Dopo aver creato un file DAD, il passaggio successivo per definire ed abilitare una

colonna XML è quello di creare la tabella in cui i relativi documenti XML verranno

memorizzati.

Argomenti correlati:

v “File DAD per le raccolte XML”

v “Raccolte XML come metodo di accesso e di memorizzazione” a pagina 89

File DAD per le raccolte XML

Per le raccolte XML, il file DAD associa la struttura del documento XML alle

tabelle DB2® da cui viene composto il documento. Mediante questo file DAD, è

anche possibile decomporre i documenti sulle tabelle DB2.

Ad esempio, se si ha un elemento denominato <Tax> nel documento XML, è

necessario associare <Tax> a una colonna denominata TAX. Il file DAD viene

utilizzato per definire la relazione tra i dati XML e i dati relazionali.

È necessario specificare il file DAD abilitando una raccolta o quando si utilizza un

file DAD nelle procedure memorizzate per le raccolte XML. Il file DAD è un

documento XML ubicato sul client. Se si decide di convalidare i documenti XML

con un file DTD, il file DAD può essere associato a tale DTD. Se utilizzato come

parametro di input delle procedure memorizzate XML Extender, il file DAD ha un

tipo di dati CLOB. Questo file può essere massimo 100 KB.

Per specificare il metodo di accesso e memorizzazione alla raccolta XML, utilizzare

la tag <Xcollection> nel file DAD.

<Xcollection>

Specifica che i dati XML devono essere decomposti dai documenti XML in

una raccolta di tabelle relazionali o devono essere composti in documenti

XML da una raccolta di tabelle relazionali.

Una raccolta XML è una serie di tabelle relazionali che contengono dati

XML. Le applicazioni consentono una raccolta XML di qualsiasi tabelle

Capitolo 9. File DAD (document access definition) 167

Page 178: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

utente. Queste tabelle utente possono essere tabelle di dati aziendali

esistenti oppure tabelle recentemente create da XML Extender.

Il file DAD specifica le associazioni tra gli elementi o gli attributi del documento

XML e le colonne delle tabelle. Esso utilizza i seguenti tipi di nodo per specificare

tali associazioni:

root_node

Specifica il nodo root del documento.

element_node

Identifica un elemento, che può essere l’elemento root o un elemento

secondario.

text_node

Rappresenta il testo CDATA di un elemento.

attribute_node

Rappresenta un attributo di un elemento.

Figura 13 mostra un frammento dell’associazione utilizzata in un file DAD. I nodi

associano il contenuto dei documenti XML alle colonne delle tabelle in una tabella

relazionale.

In questo esempio, le prime due colonne hanno elementi ed attributi associati.

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "dtd\dad.dtd">

<DAD>

...

<Xcollection>

<SQL_stmt>

...

</SQL_stmt>

<prolog>?xml version="1.0"?</prolog>

<doctype>!DOCTYPE Order SYSTEM

"install_dxx\samples\db2xml\dtd\getstart.dtd"</doctype>

<root_node>

<element_node name="Order"> --> Identifica l’elemento <Order>

<attribute_node name="key"> --> Identifica l’attributo "key"

<column name="order_key"/> --> Definisce il nome della colonna,

"order_key", a cui

sono associati

l’elemento e l’attributo

</attribute_node>

<element_node name="Customer"> --> Identifica un elemento secondario di

<Order> come <Customer>

<text_node> --> Specifica il testo CDATA per

l’elemento <Customer>

<column name="customer"> --> Definisce il nome della colonna

"customer", a cui viene associato

l’elemento secondario

</text_node>

</element_node>

...

</element_node>

...

</root_node>

</Xcollection>

</DAD>

Figura 13. Definizioni di nodo per il documento XML associato alla tabella di raccolte XML

168 XML Extender - Amministrazione e programmazione

Page 179: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

XML Extender supporta anche l’elaborazione di istruzioni per fogli di stile

mediante l’elemento <stylesheet>. Tale elemento deve trovarsi all’interno del nodo

root del file DAD, con gli elementi doctype e prolog definiti per il documento

XML. Ad esempio:

<Xcollection>

...

<prolog>...</prolog>

<doctype>...</doctype>

<stylesheet>?xml-stylesheet type="text/css" href="order.css"?</stylesheet>

<root_node>...</root_node>

...

</Xcollection>

Utilizzare un qualsiasi editor di testo per creare e aggiornare un file DAD.

Argomenti correlati:

v “Schemi di associazione per raccolte XML” a pagina 101

Composizione SQL

È possibile comporre documenti XML utilizzando colonne con lo stesso nome. Le

colonne selezionate con lo stesso nome, anche se provenienti da tabelle diverse,

devono essere identificate da un alias univoco in modo che ogni variabile nella

clausola select dell’istruzione SQL sia differente. Il seguente esempio mostra il

modo in cui assegnare alias univoci alle colonne che hanno gli stessi nomi.

<SQL_stmt>select o.order_key as oorder_key,

key, customer_name, customer_email,

p.part_key, p.order_key as porder_key,

color, qty, price, tax, ship_id, date, mode

from order_tab o.part_tab p

order by oorder_key, part_key</SQL_stmt>

È inoltre possibile comporre documenti XML utilizzando colonne con valori

generati casualmente. Se un’istruzione SQL in un file DAD ha un valore casuale, è

necessario assegnare alla funzione del valore casuale un alias in modo da

utilizzarlo nella clausola ORDER BY. Questo requisito è necessario in quanto il

valore non è associato ad alcuna colonna nella tabella specificata. Fare riferimento

all’alias per generate_unique alla fine della clausola ORDER BY nel seguente

esmepio.

<SQL_stmt>select o.order_key, customer_name,customer_email,

p.part_key,color,qty,price,tax,ship_id,

date, mode

from order_tab o,part_tab p,

table(select substr(char(timestamp(generate_unique())),16)

as ship_id, date, mode,

part_key

from ship_tab) s

where o.order_key=1 and p.price>2000 and

o.order_key=o.order_key and s.part_key

order by order_key, part_key,ship_id</SQL_stmt>

Composizione di nodi RDB

Le seguenti limitazioni si applicano soltanto alla composizione dei nodi RDB:

v La condizione associata a qualsiasi file DAD del nodo RDB non root_node deve

essere confrontata con un letterale.

v La condizione associata a un qualsiasi nodo RDB di livello inferiore nel DAD

deve essere confrontata con un letterale.

Capitolo 9. File DAD (document access definition) 169

Page 180: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v La condizione associata a un elemento root_node descrive la relazione tra le

tabelle coinvolte nella composizione di nodi RDB. Un esempio è la relazione

delle chiavi esterne primarie.

v Ogni condizione di uguaglianza nella condizione associata a un elemento

RDB_node di livello superiore specifica la relazione join tra le colonne di due

tabelle e viene applicata separatamente da altre condizioni di uguaglianza. In

altre parole, tutti i predicati connessi da AND non vengono applicati

simultaneamente per una singola condizione join: essi simulano una condizione

join più esterna quando viene composto il documento. La relazione parent-child

relationship tra ogni coppia di tabelle è determinata dalla relativa nidificazione

nel file DAD. Ad esempio:<condition>order_tab.order_key=part_tab.order_key AND

part_tab.part_key=ship_tab.part_key</condition>

Composizione da righe che hanno valori null

È possibile utilizzare colonne che hanno valori null per comporre documenti XML.

Il seguente esempio illustra come generare un documento XML da una tabella

MyTable che ha una riga contenente un valore null nella colonna Col 1. Il file DAD

utilizzato in questo esempio è nullcol.dad.

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "c:\dxx\dtd\dad.dtd">

<DAD>

<validation>NO validation>NO>

<Xcollection>

<SQL_stmt>SELECT 1 as X, Col1 FROM MyTable order by X, Col1<\SQL_stmt>

<prolog>?xml version="1.0"?prolog>?xml version="1.0"?>

<doctype>!DOCTYPE Order SYSTEM "e:\t3xml\x.dtd">

<root_node>

<element_node name="MyColumn">

<element_node name="Column1" multi_occurrence="YES">

<text_node>

<column name="Col1"/>

</text_node>

</element_node>

</element_node>

</roott_node>

</Xcollection>

</DAD>

MyTable

___________

| Col 1 |

|__________|

| 1 |

|__________|

| 3 |

|__________|

| — |

|__________|

Eseguire tests2x mydb nullcol.dad result_tab o utilizzare il comando dxxGenXML

per produrre il seguente documento. Non esiste un terzo elemento Column1 in

quanto quella riga nella tabella aveva un valore null.

170 XML Extender - Amministrazione e programmazione

Page 181: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<?xml version="1.0"?>

<!DOCTYPE Order SYSTEM "e:\t3xml\x.dtd">

<MyColumn>

<Column1>1</Column1>

<Column1>3</Column1>

</MyColumn>

DTD per il file DAD

In questa sezione vengono descritte le dichiarazioni DTD (document type

declarations) per il file DAD (document access definition). Il file DAD stesso è un

documento XML con struttura ad albero e richiede un DTD. Il nome del file DTD è

dad.dtd. Il seguente esempio mostra il DTD per il file DAD:

<?xml encoding="US-ASCII"?>

<!ELEMENT DAD ((schemabindings |dtdid)?, validation, (Xcolumn | Xcollection))>

<!ELEMENT dtdid (#PCDATA)>

<!ELEMENT schemabindings (nonamespacelocation)>

<!ELEMENT nonamespacelocation EMPTY>

<!ATTLIST nonamespacelocation location CDATA #REQUIRED>

<!ELEMENT validation (#PCDATA)>

<!ELEMENT Xcolumn (table*)>

<!ELEMENT table (column*)>

<!ATTLIST table name CDATA #REQUIRED

key CDATA #IMPLIED

orderBy CDATA #IMPLIED>

<!ELEMENT column EMPTY>

<!ATTLIST column

name CDATA #REQUIRED

type CDATA #IMPLIED

path CDATA #IMPLIED

multi_occurrence CDATA #IMPLIED>

<!ELEMENT Xcollection (SQL_stmt?, prolog, doctype?, stylesheet?, root_node)>

<!ELEMENT SQL_stmt (#PCDATA)>

<!ELEMENT prolog (#PCDATA)>

<!ELEMENT stylesheet (#PCDATA)>

<!ELEMENT doctype (#PCDATA)>

<!ELEMENT root_node (element_node)>

<!ELEMENT element_node (RDB_node?,

attribute_node*,

text_node?,

element_node*,

namespace_node*,

process_instruction_node*,

comment_node*)>

<!ATTLIST element_node

name CDATA #REQUIRED

ID CDATA #IMPLIED

multi_occurrence CDATA "NO"

BASE_URI CDATA #IMPLIED> <!--ignored -->

<!ELEMENT attribute_node (column | RDB_node)>

<!ATTLIST attribute_node

name CDATA #REQUIRED>

<!ELEMENT text_node (column | RDB_node)>

<!ELEMENT RDB_node (table+, column?, condition?)>

<!ELEMENT condition (#PCDATA)>

<!ELEMENT comment_node (#PCDATA)> <!-- ignored -->

<!ELEMENT namespace_node EMPTY> <!-- ignored -->

<!ATTLIST namespace_node

name CDATA #IMPLIED

value CDATA #IMPLIED>

<!ELEMENT process_instruction_node (#PCDATA)> <!-- ignored -->

Il file DAD contiene quattro elementi principali:

Capitolo 9. File DAD (document access definition) 171

Page 182: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v DTDID

v validation

v Xcolumn

v Xcollection

Xcolumn e Xcollection hanno un elemento secondario e attributi che consentono

l’associazione di dati XML alle tabelle relazionali in DB2. Nel seguente elenco sono

riportati gli elementi principali e i relativi elementi e attributi secondari. Gli esempi

della sintassi sono presi dall’esempio precedente.

Elemento DTDID

I DTD forniti a XML Extender cono memorizzati nella tabella DTD_REF.

Ogni DTD è identificato da un ID univoco fornito nella tag DTDID del file

DAD. La tag DTDID fa riferimento al DTD che convalida i documenti XML

oppure consente l’associazione tra le tabelle della raccolta XML e i

documenti XML. Per le raccolte XML, questo elemento è richiesto solo per

la convalida di documenti XML di input e di output. Per le colonne XML,

questo elemento è necessario solo per convalidare i documenti XML di

input. La tag DTDID deve essere uguale a SYSTEM ID specificato in doctype

nei documenti XML.

Sintassi: <!ELEMENT dtdid (#PCDATA)>

Elemento validation

Indica se il documento XML deve essere convalidato con il DTD per il

DAD. Se è specificato YES, allora deve essere specificato anche DTDID.

Sintassi: <!ELEMENT validation(#PCDATA)>

Elemento Xcolumn

Definisce lo schema di indicizzazione per una colonna XML. Esso è

costituito da zero o più tabelle.

Sintassi: <!ELEMENT Xcolumn (table*)>Xcolumn ha un elemento secondario,

table.

Elemento table

Definisce una o più tabelle relazionali create per l’indicizzazione di

elementi o attributi di documenti memorizzati in una colonna XML.

Sintassi:

<!ELEMENT table (column+)>

<!ATTLIST table name CDATA #REQUIRED

key CDATA #IMPLIED

orderBy CDATA #IMPLIED>

L’elemento table ha un attributo obbligatorio e due attributi impliciti:

Attributo name

Specifica il nome della tabella laterale.

Attributo key

La chiave primaria della tabella.

Attributo orderBy

I nomi delle colonne che determinano l’ordine di sequenza del

testo dell’elemento o dei valori dell’attributo con più ricorrenze

quando si generano i documenti XML.

L’elemento table ha un elemento secondario:

172 XML Extender - Amministrazione e programmazione

Page 183: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Elemento column

Associa un attributo di un nodo CDATA dal documento XML di

input a una colonna nella tabella.

Sintassi:

<!ATTLIST column

name CDATA #REQUIRED

type CDATA #IMPLIED

path CDATA #IMPLIED

multi_occurrence CDATA #IMPLIED>

L’elemento column ha i seguenti attributi:

Attributo name

Specifica il nome della colonna. Questo è il nome alias del

percorso della posizione che identifica un elemento o un

attributo.

Attributo type

Definisce il tipo di dati della colonna. Esso può essere un

qualsiasi tipo di dati SQL.

Attributo path

Mostra il percorso della posizione di un elemento o di un

attributo XML e deve essere il percorso semplice come

specificato nella Tabella 3.1.a.

Attributo multi_occurrence

Specifica se questo elemento o attributo è presente più

volte in un documento XML. I valori possono essere YES o

NO.

Xcollection

Definisce l’associazione tra documenti XML e una raccolta XML di tabelle

relazionali.

Sintassi:

<!ELEMENT Xcollection(SQL_stmt?, prolog, doctype, root_node)>

Xcollection ha i seguenti elementi secondari:

SQL_stmt

Specifica l’istruzione SQL utilizzata da XML Extender per definire

la raccolta. In particolare, l’istruzione seleziona i dati XML dalle

tabelle della raccolta XML e li utilizza per generare i documenti

XML nella raccolta. Il valore di questo elemento deve essere

un’istruzione SQL valida. Essa è utilizzata solo per la composizione

ed è consentito solo un elemento SQL_stmt.

Syntax: <!ELEMENT SQL_stmt #PCDATA >

prolog

Il testo per il prologo XML. Lo stesso prologo è fornito a tutti i

documenti nell’intera raccolta. Il valore di prolog è un valore fisso.

Sintassi: <!ELEMENT prolog #PCDATA>

doctype

Definisce il testo per il DTD (document type definition) XML.

Sintassi:

<!ELEMENT doctype (#PCDATA | RDB_node)*>

Capitolo 9. File DAD (document access definition) 173

Page 184: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

doctype è utilizzato per specificare il DOCTYPE del documento

risultante. Definire un valore esplicito. Questo valore viene fornito

a tutti i documenti nell’intera raccolta.

doctype ha un elemento secondario:

root_node

Definisce il nodo root virtuale. root_node deve avere l’elemento

secondario richiesto, element_node, che può essere utilizzato solo

una volta. L’elemento element_node in root_node è l’elemento

root_node del documento XML.

Sintassi: <!ELEMENT root_node(element_node)>

RDB_node

Definisce la tabella del database DB2 in cui deve essere

memorizzato il contenuto di elemento XML o il valore di un

attributo XML o da cui verranno richiamati. rdb_node è un

elemento secondario di element_node, text_node e attribute_node e

ha i seguenti elementi secondari:

table Specifica la tabella in cui viene memorizzato il contenuto

dell’elemento o dell’attributo.

column

Specifica la colonna in cui viene memorizzato il contenuto

dell’elemento o dell’attributo.

condition

Specifica una condizione per la colonna (facoltativo).

element_node

Rappresenta un elemento XML. Esso deve essere definito nel DAD

specificato per la raccolta. Per l’associazione RDB_node, l’elemento

root element_node deve avere un RDB_node per specificare tutte le

tabelle contenenti i dati XML per sé stesso e per tutti i nodi

secondari. Esso può avere zero o più attribute_nodes e

element_nodes secondari, oltre a zero o un text_node. Per gli

elementi che non sono root, non è necessario alcun elemento

RDB_node.

Sintassi:

Un element_node è definito dai seguenti elementi secondari:

RDB_node

(Facoltativo) Specifica le tabelle, la colonna e le condizioni

per i dati XML. L’elemento RDB_node per un elemento

deve essere definito solo per l’associazione RDB_node. In

questo caso, è necessario specificare una o più tabelle. La

colonna non è necessaria in quanto il contenuto

dell’elemento è specificato dall’elemento text_node. La

condizione è facoltativa, a seconda della DTD e della

condizione dell’interrogazione.

child nodes

Facoltativo: un elemento element_node può avere i seguenti

nodi secondari:

element_node

Rappresenta gli elementi secondari dell’elemento

XML corrente.

174 XML Extender - Amministrazione e programmazione

Page 185: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

attribute_node

Rappresenta gli attributi dell’elemento XML

corrente.

text_node

Rappresenta il testo CDATA dell’elemento XML

corrente.

attribute_node

Rappresenta un attributo XML. Questo è il nodo che definisce

l’associazione tra un attributo XML e i dati della colonna in una

tabella relazionale.

Sintassi:

L’elemento attribute_node deve avere definizioni per un attributo

name e un elemento secondario column o RDB_node. attribute_node

ha il seguente attributo:

name Il nome dell’attributo.

attribute_node ha i seguenti elementi secondari:

column

Utilizzato per l’associazione SQL. La colonna deve essere

specificata nella clausola SELECT di SQL_stmt.

RDB_node

Utilizzato per l’associazione RDB_node. Il nodo definisce

l’associazione tra questo attributo e i dati della colonna

nella tabella relazionale. È necessario specificare la tabella e

la colonna. La condizione è facoltativa.

text_node

Rappresenta il contenuto del testo di un elemento XML. Questo è il

nodo che definisce l’associazione tra il contenuto di un elemento

XML e i dati della colonna in una tabella relazionale.

Sintassi: Esso deve essere definito da un elemento secondario

column o RDB_node:

column

Necessario per l’associazione SQL. In questo caso, la

colonna deve essere specificata nella clausola SELECT di

SQL_stmt.

RDB_node

Necessario per l’associazione RDB_node. Il nodo definisce

l’associazione tra questo contenuto di testo e i dati della

colonna nella tabella relazionale. È necessario specificare

table e column. La condizione è facoltativa.

Argomenti correlati:

v “File DAD per le raccolte XML” a pagina 167

Attività correlate:

v “Sovrascrittura dinamica di valori nel file DAD”

Sovrascrittura dinamica di valori nel file DAD

Procedura:

Capitolo 9. File DAD (document access definition) 175

Page 186: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Per le interrogazioni dinamiche è possibile utilizzare due parametri facoltativi per

sovrascrivere le condizioni nel file DAD: override e overrideType. In base all’input di

overrideType, l’applicazione può sovrascrivere i valori della tag <SQL_stmt> per

l’associazione SQL o le condizioni in RDB_nodes per l’associazione RDB_node nel

file DAD.

Tali parametri hanno i seguenti valori e regole:

overrideType

Questo parametro è un parametro di input richiesto (IN) che indica il tipo di

parametro override. Il parametro overrideType ha i seguenti valori:

NO_OVERRIDE

Specifica di non sovrascrivere una condizione nel file DAD.

SQL_OVERRIDE

Specifica di sovrascrivere l’istruzione SQL nel file DAD.

XML_OVERRIDE

Specifica di sovrascrivere una condizione nel file DAD con una condizione

basata sul percorso della posizione.

override

Questo parametro è un parametro di input facoltativo (IN) che specifica la

condizione override per il file DAD. La sintassi del valore di input corrisponde

al valore specificato sul parametro overrideType:

v Se si specifica NO_OVERRIDE, il valore di input è una stringa NULL.

v Se si specifica SQL_OVERRIDE, il valore di input è una istruzione SQL

valida.

Per utilizzare SQL_OVERRIDE, è necessario utilizzare lo schema di

associazione SQL nel file DAD. L’istruzione SQL di input sovrascrive

l’istruzione SQL specificata dall’elemento <SQL_stmt> nel file DAD.

v Se si specifica XML_OVERRIDE, il valore di input è una stringa che contiene

una o più espressioni.

Se si utilizza XML_OVERRIDE e un’espressione, è necessario utilizzare lo

schema di associazione RDB_node nel file DAD. L’espressione XML di input

sovrascrive la condizione RDB_node specificata nel file DAD. L’espressione

utilizza la seguente sintassi:

��

AND

percorso della posizione semplice

=

valore

>

<

<>

>=

<=

LIKE

��

La sintassi ha i seguenti componenti:

percorso della posizione semplice

Specifica un percorso semplce mediante la sintassi definita da XPath.

operatori

Gli operatori SQL presenti nel diagramma della sintassi possono

contenere uno spazio per separare l’operatore da altre parti

dell’espressione.

176 XML Extender - Amministrazione e programmazione

Page 187: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Gli spazi prima e dopo gli operatori sono facoltativi. Gli spazi sono

invece obbligatori attorno all’operatore LIKE.

valore

Un valore numerico o una stringa racchiusa tra virgolette singole.

AND

L’operatore AND viene trattato come un operatore logico sullo stesso

percorso della posizione. Se un percorso semplice viene specificato più

di una volta nella stringa override, allora tutti i predicati per il percorso

semplice vengono applicati simultaneamente.Se si specifica XML_OVERRIDE, la condizione per RDB_node nell’elemento

text_node o attribute_node che corrisponde al percorso semplice verrà

sovrascritto dall’espressione specificata.

XML_OVERRIDE non è completamente conforme con XPath. Il percorso

semplice è utilizzato solo per identificare l’elemento o l’attributo associato a

una colonna.

I seguenti esempi utilizzano SQL_OVERRIDE e XML_OVERRIDE per visualizzare

la condizione override dinamica.

Esempio 1: una procedura memorizzata che utilizza SQL_OVERRIDE. In questo

esempio, l’elemento <xcollection> nel file DAD deve avere un elemento

<SQL_stmt>. Il parametro override sovrascrive il valore di <SQL_stmt>,

modificando il prezzo in modo che sia maggiore di 50.00 e la data in modo che sia

successiva a 1998-12-01.

include "dxx.h"

include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char collection[32]; /* buffer dad */

char result_tab[32]; /* nome della tabella dei risultati */

char override[256]; /* override, SQL_stmt */

short overrideType; /* definito in dxx.h */

short max_row; /* numero massimo di righe */

short num_row; /* numero reale di righe */

long returnCode; /* codice ritorno errore */

char returnMsg[1024]; /* testo messaggio di errore */

short rtab_ind;

short collection_ind;

short ovtype_ind;

short ov_ind;

short maxrow_ind;

short numrow_ind;

short returnCode_ind;

short returnMsg_ind;

EXEC SQL END DECLARE SECTION;

/* crea la tabella */

EXEC SQL CREATE TABLE xml_order_tab (xmlorder XMLVarchar);

/* inizializza la variabile host e gli indicatori */

strcpy(collection,"sales_ord");

strcpy(result_tab,"xml_order_tab");

sprintf(override,"%s %s %s %s %s %s %s",

"SELECT o.order_key, customer, p.part_key,

quantity, price,", "tax, ship_id, date, mode ",

"FROM order_tab o, part_tab p,",

"table(select substr(char(timestamp

Capitolo 9. File DAD (document access definition) 177

Page 188: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

(generate_unique())),16)",

"as ship_id, date, mode from ship_tab) s",

"WHERE p.price > 50.00 and s.date >’1998-12-01’ AND",

"p.order_key = o.order_key and s.part_key = p.part_key");

overrideType = SQL_OVERRIDE;

max_row = 500;

num_row = 0;

returnCode = 0;

msg_txt[0] = ’\0’;

collection_ind = 0;

rtab_ind = 0;

ov_ind = 0;

ovtype_ind = 0;

maxrow_ind = 0;

numrow_ind = -1;

returnCode_ind = -1;

returnMsg_ind = -1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxRetrieveXML(: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);

Esempio 2: una procedura memorizzata che utilizza XML_OVERRIDE. In questo

esempio, l’elemento <collection> nel file DAD ha un RDB_node per l’elemento root

element_node. Il valore override si basa sul contenuto XML. XML Extender converte

il percorso semplice nella colonna del database DB2 associata.

include "dxx.h"

include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char collection[32]; /* buffer dad */

char result_tab[32]; /* nome della tabella dei risultati */

char override[256]; /* override, condizione XPATH */

short overrideType; /* definito in dxx.h */

short max_row; /* numero massimo di righe */

short num_row; /* numero reale di righe */

long returnCode; /* codice ritorno errore */

char returnMsg[1024]; /* testo messaggio di errore */

short dadbuf_ind;

short rtab_ind;

short collection_ind;

short ovtype_ind;

short ov_ind;

short maxrow_ind;

short numrow_ind;

short returnCode_ind;

short returnMsg_ind;

EXEC SQL END DECLARE SECTION;

/* crea la tabella */

EXEC SQL CREATE TABLE xml_order_tab (xmlorder XMLVarchar);

/* inizializza la variabile host e gli indicatori */

strcpy(collection,"sales_ord");

strcpy(result_tab,"xml_order_tab");

sprintf(override,"%s %s",

"/Order/Part/Price > 50.00 AND ",

"Order/Part/Shipment/ShipDate > ’1998-12-01’");

overrideType = XML_OVERRIDE;

max_row = 500;

num_row = 0;

178 XML Extender - Amministrazione e programmazione

Page 189: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

returnCode = 0;

msg_txt[0] = ’\0’;

collection_ind = 0;

rtab_ind = 0;

ov_ind = 0;

ovtype_ind = 0;

maxrow_ind = 0;

numrow_ind = -1;

returnCode_ind = -1;

returnMsg_ind = -1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxRetrieveXML(: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);

Sovrascritture multiple

XML Extender supporta più sovrascritture nello stesso percorso. Tutte le

sovrascritture specificate sul nodo RDB verranno accettate.

È possibile specificare più sovrascritture XML sullo stesso percorso di posizione

per ridefinire le condizioni set nella ricerca. Nel seguente esempio, un documento

XML è composto dalle due tabelle mediante il file test.dad.

Tabella 45. Tabella Reparto

Numero reparto Nome reparto

10 Ingegneria

20 Operazioni

30 Marketing

Tabella 46. Tabella Impiegato

Numero impiegato Numero reparto Salario

123 10 $98,000.00

456 10 $87,000.00

111 20 $65,000.00

222 20 $71,000.00

333 20 $66,000.00

500 30 $55,000.00

Il file DAD test.dad illustrato di seguito contiene una condizione che confronta la

variabile deptno con il valore 10. Per espandere la ricerca a valori maggiori di 10 e

minori di 30, è necessario sovrascrivere questa condizione. È necessario impostare

il parametro override quando si richiama dXXGenXML come riportato di seguito:

/ABC.com/Department>10 AND /ABC.com/Department<30

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "C:\dxx_xml\test\dtd\dad.dtd">

<DAD>

<dtdid>E:\dtd\lineItem.dtd</dtdid>

<validation>NO</validation>

<Xcollection>

<porlog>?xmol version="1.0"?</prolog>

Capitolo 9. File DAD (document access definition) 179

Page 190: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<doctype>!DOCTYPE Order SYSTEM "C:\dxx_xml\test\dtd\LineItem.dtd"</doctype>

<root_node>

<element_node name="ABC.com">

<TDB_node>

<table name="dept" key="deptno"/>

<table name="empl" key="emplno"/>

<condition>dept deptno=empl.deptno</condition>

</RDB_node>

<element_node name="Department" multi_occurrence="YES">

<text_node>

<RDB_node>

<table name="dept"/>

<column name="deptno">

<condition>deptno=10</condition><RDB_node></RDB_node><text_node></text_node>

<element_node name="Employees" multi_occurrence="YES">

<text_node>

<RDB_node>

<table name="dept"><column name="deptnot"><condition>deptno=10</condition>

</table></RDB_node></text_node>

<element_node name="Employees" multi_occurence="YES">

<element_node name="EmployeeNo">

<text_node>

<RDB_node>

<table name="empl"><column name="emplno"><condition>emplno<500</condition>

</table></RDB_node></text_node></element_node>

<element_node name="Salary">

<text_node>

<RDB_node>

<table name="empl"><column name="salary"><condition>salary>5000.00</condition>

</table></RDB_node></text_node></element_node></element_node></element_node>

Per comporre un documento XML senza una condizione override, immettere

tests2x mydb test.dad result_tab o richiamare dxxGenXML senza impostare

l’override. Si avrà un documento simile al seguente:

<?xml version="1.0">

<!DOCTYPE Order SYSTEM "C:\dxx_xml\test\dtd\LineItem.dtd">

<ABC.com>

<Department>10

<Employees>

<EmployeeNo>123</EmployeeNO>

<Salary>98,000.00</Salary>

</Employees>

<Employees>

<EmployeeNo>456</EmployeeNo>

<Salary>87,000.00</Salary>

</Employees>

</Department>

</ABC.COM>

Per sovrascrivere il file DAD è possibile richiamare dxxGenXML come già citato

oppure eseguire il programma test2x con le condizioni specificate:

180 XML Extender - Amministrazione e programmazione

Page 191: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

tests2x mydb test.dad result_tab -o 2 ″/ABC.com/Department>10 AND

/ABC.com/Department<30″

<?xml version="1.0">

<!DOCTYPE Order SYSTEM "C:\dxx_xml\test\dtd\LineItem.dtd">

<ABC.com>

<Department>20

<Employees>

<EmployeeNo>111</EmployeeNo>

<Salary>65,000.00</Salary>

</Employees>

<EmployeeNo>222</EmployeeNo>

<Salary>71,000.00</Salary>

</Employees>

<Employees>

<EmployeeNo>333</EmployeeNo>

<Salary>66,000.00</Salary>

</Employees>

</Department>

</ABC.com>

Argomenti correlati:

v “File DAD per le raccolte XML” a pagina 167

Riferimenti correlati:

v “DTD per il file DAD” a pagina 171

Capitolo 9. File DAD (document access definition) 181

Page 192: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

182 XML Extender - Amministrazione e programmazione

Page 193: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 10. Procedure memorizzate di XML Extender

Procedure memorizzate di XML Extender - Panoramica

XML Extender fornisce procedure memorizzate per la gestione di colonne e

raccolte XML. Tali procedure memorizzate possono essere richiamate dal client

DB2. L’interfaccia client può essere integrata in SQL, ODBC o JDBC. Fare

riferimento alla sezione sulle procedure memorizzate nei manuali IBM DB2

Administration Guide per maggiori dettagli su come richiamare le procedure.

Le procedure memorizzate utilizzano lo schema DB2XML, che è il nome schema di

XML Extender.

XML Extender fornisce tre tipi di procedure memorizzate:

Procedure memorizzate di gestione

consentono agli utenti di completare le attività di gestione

Procedure memorizzate di composizione

generano documenti XML utilizzando i dati nelle tabelle di database

esistenti

Procedure memorizzate di decomposizione

interrompono o suddividono i documenti XML in entrata e memorizzano i

dati in tabelle di database nuove o esistenti

Verificare di includere i file di intestazione esterni di XML Extender nel

programma che richiama le procedure. I file di intestazione si trovano nella

directory ″install_dxx\dxx\samples\extenders\db2xml\include″, dove install_dxx è

la directory in cui è stato installato DB2 XML Extender. I file di intestazione sono:

dxx.h La costante definita e i tipi di dati di XML Extender

dxxrc.h Il codice di ritorno di XML Extender

La sintassi per includere i file di intestazione è:

#include "dxx.h"

#include "dxxrc.h"

Verificare che il percorso dei file di inclusione sia stato indicato nel makefile

insieme alle opzioni di compilazione.

Richiamo delle procedure memorizzate XML Extender

È possibile utilizzare XML Extender in diversi sistemi operativi da una singola

applicazione client, scrivendo i nomi della procedura memorizzata in maiuscolo e

in minuscolo. Per richiamare le procedure memorizzate in questo modo, utilizzare

le versioni result_colname e valid_colname delle procedure memorizzate di

composizione. L’utilizzo di questo metodo offre i seguenti vantaggi:

v È possibile utilizzare le procedure memorizzate in tutti gli ambienti di DB2

Database poiché è possibile includere molte colonne nella tabella dei risultati. Le

versioni delle procedure memorizzate che non supportano result_colname e

valid_colname richiedono esattamente una colonna nella tabella dei risultati.

© Copyright IBM Corp. 1999 - 2006 183

Page 194: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v È possibile utilizzare una tabella temporanea dichiarata come tabella dei

risultati. La tabella temporanea è identificata da uno schema impostato su

″session″. Le tabelle temporanee dichiarate consentono di supportare gli

ambienti client multi-utenti.

Utilizzare il maiuscolo quando si richiamano le procedure memorizzate DB2 XML

Extender per accedere alle procedure memorizzate sulle piatteforme.

Prerequisiti: Associare il database alla procedura memorizzata XML Extender e i

file di collegamento DB2 CLI. È possibile utilizzare un file di comando di esempio,

getstart_prep.cmd, per associare i file. Questo file di comando si trova nella

directory ″c:\cmd″. Per associare:

1. Collegarsi al database. Ad esempio:

db2 "connect to SALES_DB"

2. Passare alla directory ″c:\bnd″ e associare XML Extender al database.

db2 "bind @dxxbind.lst"

3. Passare alla directory ″c:\bnd″ e associare CLI al database.

db2 "bind @db2cli.lst"

4. Terminare la connessione.

db2 "terminate"

Procedura:

Richiamare XML Extender utilizzando la seguente sintassi:

CALL DB2XML.function_entry_point

Dove:

function_entry_point

Specifica il nome della funzione.

Nell’istruzione CALL, gli argomenti trasferiti alla procedura memorizzata devono

essere variabili host, non costanti o espressioni. Le variabili host possono avere

indicatori nulli.

Consultare gli esempi per richiamare le procedure memorizzate nel file di origine

dxx_install/samples/extenders/db2xml/c e dxx_install/samples/extenders/db2xml/cli. Nella la directory dxx_install/samples/extenders/db2xml/c, i file del

codice SQX sono forniti per richiamare le procedure memorizzate della raccolta

XML utilizzando SQL integrato. Nella directory dxx_install/samples/extenders/db2xml/cli, i file di esempio mostrano come richiamare le procedure memorizzate

utilizzando la CLI (Call Level Interface).

Procedure memorizzate che restituiscono CLOB

Se si hanno file CLOB più grandi di un 1 MB, è possibile ridefinire il parametro

della procedura memorizzata creando ed eseguendo un file contenente i seguenti

comandi:

drop procedure db2xml.dxxGenXMLClob;

create procedure db2xml.dxxGenXMLClob(

in dadBuf clob(100K),

in overrideType integer,

in override varchar(32672),

out resultDoc clob(1M),

184 XML Extender - Amministrazione e programmazione

Page 195: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

out valid integer,

out numDocs integer,

out returnCode integer,

out returnMsg varchar(1024)

)

external name ’db2xml!dxxGenXMLClob’

specific DB2XML.DXXGENXMLCLOB

language C

parameter style SQL

not deterministic

fenced

null call;

drop procedure db2xml.dxxRetrieveXMLClob;

create procedure db2xml.dxxRetrieveXMLClob(

in collectionName varchar(128),

in overrideType integer,

in override varchar(32672),

out resultDoc clob(1M),

out valid integer,

out numDocs integer,

out returnCode integer,

out returnMsg varchar(1024)

)

external name ’db2xml!dxxRetrieveXMLClob’

specific DB2XML.DXXRETRIEVEXMLCLOB

language C

parameter style SQL

not deterministic

fenced

Per specificare la lunghezza CLOB: Aprire il file in un editor e modificare il

parametro resultDoc mostrato nel seguente esempio:

out resultDoc clob(clob_size),

Se viene generato più di un documento, la procedura memorizzata restituisce il

primo documento.

Raccomandazioni sulle dimensioni: Il limite delle dimensioni del parametro

resultDoc dipende dalla relativa impostazione del sistema. Notare che la quantità

specificata in questo parametro è la quantità allocata da JDBC, a prescindere dalla

dimensione del documento. La dimensione deve corrispondere ai file XML più

grandi, ma non deve superare 1.5 gigabyte.

Per eseguire il file di comando dalla riga di comando DB2 e la directory dove il file

è posizionato, immettere:

db2 -tf crtgenxc.db2

Attività correlate:

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

Capitolo 10. Procedure memorizzate di XML Extender 185

Page 196: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Procedure memorizzate di gestione di XML Extender

Procedure memorizzate di gestione di XML Extender -

Panoramica

Queste procedure memorizzate sono utilizzate per le attività di gestione, come ad

esempio l’abilitazione o la disabilitazione di una colonna o una raccolta XML. Esse

sono richiamate dal wizard di gestione di XML Extender e dal comando di

gestione dxxadm.

v dxxEnableDB()

v dxxDisableDB()

v dxxEnableColumn()

v dxxDisableColumn()

v dxxEnableCollection()

v dxxDisableCollection()

Procedura memorizzata dxxEnableDB()

Scopo:

Abilita il database. Una volta abilitato il database, XML Extender crea i seguenti

oggetti:

v I tipi di XML Extender definiti dall’utente (UDT).

v Le funzioni di XML Extender definite dall’utente (UDF).

v La tabella di repository DTD XML Extender, DTD_REF, che memorizza i DTD e

le rispettive informazioni.

v La tabella di utilizzo XML Extender, XML_USAGE, che memorizza le

informazioni comuni per ogni colonna e raccolta abilitata per XML.

Sintassi:

DB2XML.dxxEnableDB(char(dbName) dbName, /* input */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Parametri:

Tabella 47. Parametri di dxxEnableDB()

Parametro Descrizione Parametro IN/OUT

dbName Il nome del database. IN

returnCode Il codice di ritorno dalla procedura

memorizzata.

OUT

returnMsg Il testo di messaggio restituito in

caso di errore.

OUT

Argomenti correlati:

v “Procedure memorizzate di gestione di XML Extender - Panoramica”

v Capitolo 13, “Tabelle del supporto di gestione di XML Extender”, a pagina 261

Attività correlate:

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

186 XML Extender - Amministrazione e programmazione

Page 197: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v “Abilitare i server del database per XML” a pagina 51

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxDisableDB()

Scopo:

Disabilita il database. Quando XML Extender disabilita il database, elimina i

seguenti oggetti:

v I tipi di XML Extender definiti dall’utente (UDT).

v Le funzioni di XML Extender definite dall’utente (UDF).

v La tabella di repository DTD XML Extender, DTD_REF, che memorizza i DTD e

le rispettive informazioni.

v La tabella di utilizzo XML Extender, XML_USAGE, che memorizza le

informazioni comuni per ogni colonna abilitata per XML e per ogni raccolta.

Importante: è necessario disabilitare tutte le colonne XML prima di tentare di

disabilitare un database. XML Extender non può disabilitare un database che

contiene colonne o raccolte abilitate per XML Extender.

Sintassi:

DB2XML.dxxDisableDB(char(dbName) dbName, /* input */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Parametri:

Tabella 48. Parametri di dxxDisableDB()

Parametro Descrizione Parametro IN/OUT

dbName Il nome del database. IN

returnCode Il codice di ritorno dalla procedura

memorizzata.

OUT

returnMsg Il testo di messaggio restituito in

caso di errore.

OUT

Argomenti correlati:

v “Procedure memorizzate di gestione di XML Extender - Panoramica” a pagina

186

v Capitolo 13, “Tabelle del supporto di gestione di XML Extender”, a pagina 261

Attività correlate:

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxEnableColumn()

Scopo:

Capitolo 10. Procedure memorizzate di XML Extender 187

Page 198: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Abilita una colonna XML. Quando si abilita una colonna, XML Extender effettua le

seguenti attività:

v Determina se la tabella XML ha una chiave primaria; in caso contrario XML

Extender modifica la tabella XML e aggiunge una colonna denominata

DXXROOT_ID.

v Crea tabelle laterali specificate nel file DAD con una colonna contenente un

identificativo univoco per ogni riga nella tabella XML. Questa colonna è l’ID

root specificato dall’utente o DXXROOT_ID indicato da XML Extender.

v Crea una vista predefinita per la tabella XML e le relative tabelle laterali, in

alcuni casi utilizzando un nome specificato dall’utente.

Sintassi:

DB2XML.dxxEnableColumn(char(dbName) dbName, /* input */

char(tbName) tbName, /* input */

char(colName) colName, /* input */

CLOB(100K) DAD, /* input */

char(tablespace) tablespace, /* input */

char(defaultView) defaultView, /* input */

char(rootID) rootID, /* input */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Parametri:

Tabella 49. Parametri di dxxEnableColumn()

Parametro Descrizione Parametro IN/OUT

dbName Il nome del database. IN

tbName Il nome della tabella contenente la

colonna XML.

IN

colName Il nome della colonna XML. IN

DAD Un CLOB contenente il file DAD. IN

tablespace Il tablespace che contiene le tabelle

laterali diverse dal tablespace

predefinito. Se non è specificato,

viene utilizzato quello predefinito.

IN

defaultView Il nome della vista predefinita che

unisce le tabelle laterali e la tabella

dell’applicazione.

IN

rootID Il nome della singola chiave

primaria nella tabella

dell’applicazione da utilizzare come

ID root per le tabelle laterali.

IN

returnCode Il codice di ritorno dalla procedura

memorizzata.

OUT

returnMsg Il testo di messaggio restituito in

caso di errore.

OUT

Argomenti correlati:

v “Colonne XML come metodo di accesso e di memorizzazione” a pagina 74

v “Procedure memorizzate di gestione di XML Extender - Panoramica” a pagina

186

Attività correlate:

188 XML Extender - Amministrazione e programmazione

Page 199: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxDisableColumn()

Scopo:

Disabilita la colonna abilitata per XML.

Sintassi:

DB2XML.dxxDisableColumn(char(dbName) dbName, /* input */

char(tbName) tbName, /* input */

char(colName) colName, /* input */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Parametri:

Tabella 50. Parametri di dxxDisableColumn()

Parametro Descrizione Parametro IN/OUT

dbName Il nome del database. IN

tbName Il nome della tabella contenente la

colonna XML.

IN

colName Il nome della colonna XML. IN

returnCode Il codice di ritorno dalla procedura

memorizzata.

OUT

returnMsg Il testo di messaggio restituito in

caso di errore.

OUT

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxEnableCollection()

Scopo:

Abilita una raccolta XML associata a una tabella dell’applicazione.

Sintassi:

dxxEnableCollection(char(dbName) dbName, /* input */

char(colName) colName, /* input */

CLOB(100K) DAD, /* input */

char(tablespace) tablespace, /* input */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Parametri:

Tabella 51. Parametri di dxxEnableCollection()

Parametro Descrizione Parametro IN/OUT

dbName Il nome del database. IN

Capitolo 10. Procedure memorizzate di XML Extender 189

Page 200: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 51. Parametri di dxxEnableCollection() (Continua)

Parametro Descrizione Parametro IN/OUT

colName Il nome della raccolta XML. IN

DAD Un CLOB contenente il file DAD. IN

tablespace Il tablespace che contiene le tabelle

laterali diverse dal tablespace

predefinito. Se non è specificato,

viene utilizzato quello predefinito.

IN

returnCode Il codice di ritorno dalla procedura

memorizzata.

OUT

returnMsg Il testo di messaggio restituito in

caso di errore.

OUT

Argomenti correlati:

v “Raccolte XML come metodo di accesso e di memorizzazione” a pagina 89

v “Procedure memorizzate di gestione di XML Extender - Panoramica” a pagina

186

Attività correlate:

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxDisableCollection()

Scopo:

Disabilita una raccolta abilitata per XML, rimuovendo in contrassegni che

identificano le tabelle e le colonne come parte di una raccolta.

Sintassi:

dxxDisableCollection(char(dbName) dbName, /* input */

char(colName) colName, /* input */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Parametri:

Tabella 52. Parametri di dxxDisableCollection()

Parametro Descrizione Parametro IN/OUT

dbName Il nome del database. IN

colName Il nome della raccolta XML. IN

returnCode Il codice di ritorno dalla procedura

memorizzata.

OUT

returnMsg Il testo di messaggio restituito in

caso di errore.

OUT

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

190 XML Extender - Amministrazione e programmazione

Page 201: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Procedure memorizzate di composizione di XML Extender

Procedure memorizzate di composizione di XML Extender -

Panoramica

Le procedure memorizzate di composizione dxxGenXML(), dxxRetrieveXML(),

dxxGenXMLCLOB() e dxxRetrieveXMLCLOB() sono utilizzate per generare

documenti XML che utilizzano i dati presenti nelle tabelle di database esistenti. La

procedure memorizzata dxxGenXML() utilizza un file DAD come input e non

richiede una raccolta XML abilitata. La procedura memorizzata dxxRetrieveXML()

utilizza un nome di raccolta XML abilitata come input.

I seguenti miglioramenti alle prestazioni sono stati apportati per le procedure

memorizzate di composizione dxxGenXMLClob e DXXRetrieveXMLClob.

v Su sistemi UNIX® e Windows®, la lunghezza del parametro override è

aumentata da 1 KB a 32 KB.

La sovrascrittura da 1 KB imponeva una limitazione sulla lunghezza

dell’istruzione SQL per la composizione SQL. Tale limitazione incoraggiava l’uso

delle viste di database per ridurre la lunghezza dell’istruzione SQL richiesta.

Tuttavia, le viste del database possono a volte contenere una lunghezza di

percorso maggiore a causa della materializzazione. Con un parametro override

lungo, la necessità di utilizzare le viste viene ridotta notevolmente.

v Il requisito per una tabella di risultati intermedia è stato rimosso.

v Utilizzando queste procedure memorizzate:

– Viene ridotta la lunghezza del percorso delle istruzioni poiché non è

necessario creare tabelle di risultati.

– Si semplifica la programmazione.v Utilizzare le procedure memorizzate che richiedono una tabella di risultati

intermedia se si desidera creare più di un documento.

Procedura memorizzata dxxGenXML()

Scopo:

Crea documenti XML utilizzando dati che sono memorizzati nelle tabelle della

raccolta XML, specificate dall’elemento <Xcollection> nel file DAD. È possibile

aprire un cursore sulla tabella dei risultati e utilizzare quindi la serie di risultati.

Per fornire una flessibilità elevata, dxxGenXML() consente all’utente di specificare

il numero massimo di righe da generare nella tabella dei risultati. Questa

operazione riduce il tempo che l’applicazione deve attendere per ottenere i risultati

durante un qualsiasi processo di prova. La procedura memorizzata restituisce il

numero reale di righe nella tabella e i codici di ritorno e i messaggi.

Per supportare un’interrogazione dinamica, dxxGenXML() utilizza un parametro di

input, override. In base all’input di overrideType, l’applicazione può sovrascrivere i

valori della tag SQL_stmt per l’associazione SQL o le condizioni in RDB_node per

l’associazione RDB_node nel file DAD. Il parametro di input overrideType è

utilizzato per chiarire il tipo di override.

Sintassi:

Capitolo 10. Procedure memorizzate di XML Extender 191

Page 202: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

dxxGenXML(CLOB(100k) DAD, /* input */

varchar(resultTabName) resultTabName,/* input */

varchar(resultColumn) result_column,/* input */

varchar(validColumn) valid_column, /* input */

integer overrideType, /* input */

varchar(varchar_value) override, /* input */

integer maxRows, /* input */

integer numRows, /*output*/

integer returnCode, /*output*/

varchar(1024) returnMsg) /*output*/

dove varchar_value è 32672 per Windows e UNIX e 16366 per i5/OS e z/OS.

Parametri:

Tabella 53. Parametri di dxxGenXML()

Parametro Descrizione Parametro

IN/OUT

DAD Un CLOB contenente il file DAD. IN

resultTabName Il nome della tabella dei risultati, che deve

già essere presente prima della chiamata.

La tabella contiene solo una colonna di

tipo XMLVARCHAR o XMLCLOB.

IN

result_column Il nome della colonna nella tabella dei

risultati in cui sono memorizzati i

documenti XML composti.

IN

valid_column Il nome della colonna che indica se il

documento XML è valido quando viene

convalidato rispetto a una DTD (document

type definition).

IN

overrideType Un indicatore che indica il tipo di

parametro override:

v NO_OVERRIDE: Nessuna

sovrascrittura.

v SQL_OVERRIDE: Sovrascrittura da

SQL_stmt.

v XML_OVERRIDE: Sovrascrittura da

una condizione basata su un percorso di

posizione.

IN

override Sovrascrive la condizione nel file DAD. Il

valore di input si basa su overrideType.

v NO_OVERRIDE: una stringa NULL.

v SQL_OVERRIDE: un’istruzione SQL

valida. L’utilizzo di questo overrideType

richiede che venga utilizzata

l’associazione SQL nel file DAD.

L’istruzione SQL di input sovrascrive

SQL_stmt nel file DAD.

v XML_OVERRIDE: una stringa che

contiene una o più espressioni separate

dalla parola AND. L’utilizzo di questo

overrideType richiede che venga

utilizzata l’associazione RDB_node nel

file DAD.

IN

varchar_value La dimensione del VARCHAR. IN

192 XML Extender - Amministrazione e programmazione

Page 203: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 53. Parametri di dxxGenXML() (Continua)

Parametro Descrizione Parametro

IN/OUT

maxRows Il numero massimo di righe nella tabella

dei risultati.

IN

numRows Il numero reale di righe generate nella

tabella dei risultati.

OUT

returnCode Il codice di ritorno dalla procedura

memorizzata.

OUT

returnMsg Il testo del messaggio restituito in caso di

errore.

OUT

Esempi:

Nel seguente frammento di esempio si assume che venga creata una tabella di

risultati denominata XML_ORDER_TAB e che la tabella abbia una colonna di tipo

XMLVARCHAR. Un esempio operativo completo si trova in samples/extenders/db2xml/c/tests2x.sqx.

#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; /* file dad */

char result_tabname[160]; /* nome della tabella di risultati */

char result_colname[129]; /* nome della colonna per

il documento dei risultati*/

char result_valname[129]; /* nome della colonna

per i risultati della convalida*/

char verride[2]; /* override, impostato su NULL*/

short overrideType; /* definito in dxx.h */

short max_row; /* numero massimo di righe */

short num_row; /* numero effettivo di righe */

long returnCode; /* codice ritorno errore */

char returnMsg[1024]; /* testo messaggio di errore */

short dad_ind;

short rtab_ind;

short rcol_ind;

short rval_ind;

short ovtype_ind;

short ov_inde;

short maxrow_ind;

short numrow_ind;

short returnCode_ind;

short returnMsg_ind;

EXEC SQL END DECLARE SECTION;

/* crea la tabella */

EXEC SQL CREATE TABLE xml_order_tab (xmlorder XMLVarchar);

/* legge i dati da un file su un CLOB */

strcpy(dadfile.name,"dxxinstall/dad/litem3.dad");

dadfile.name_length = strlen("dxxinstall/dad/litem3.dad");

dadfile.file_options = SQL_FILE_READ;

EXEC SQL VALUES (:dadfile) INTO :dad;

strcpy(result_tabname,"xml_order_tab");

override[0] = ’\0’;

Capitolo 10. Procedure memorizzate di XML Extender 193

Page 204: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

overrideType = NO_OVERRIDE;

max_row = 500;

num_row = 0;

returnCode = 0;

msg_txt[0] = ’\0’;

collection_ind = 0;

dad_ind = 0;

rtab_ind = 0;

rcol_ind = 0;

rval_ind = 0;

ov_ind = -1;

ovtype_ind = 0;

maxrow_ind = 0;

numrow_ind = -1;

returnCode_ind = -1;

returnMsg_ind = -1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxGenXML(:dad:dad_ind;

:result_tabname:rtab_ind,

:result_colname:rcol_ind,

:result_valname:rval_ind,

:overrideType:ovtype_ind,:override:ov_ind,

:max_row:maxrow_ind,:num_row:numrow_ind,

:returnCode:returnCode_ind,:returnMsg:returnMsg_ind);

Argomenti correlati:

v “Procedure memorizzate di composizione di XML Extender - Panoramica” a

pagina 191

Attività correlate:

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

v “Composizione di raccolte XML utilizzando l’associazione RDB_node” a pagina

62

v “Composizione dei documenti XML utilizzando l’associazione SQL” a pagina 59

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxRetrieveXML()

Scopo:

La procedura memorizzata dxxRetrieveXML() è un mezzo per richiamare i

documenti XML decomposti. Come input, dxxRetrieveXML() utilizza il nome di

una raccolta XML abilitata, il nome della tabella dei risultati creata e il numero

massimo di righe da restituire. Essa restituisce la serie di risultati dalla tabella dei

risultati, il numero di righe nella serie di risultati, un codice di errore e il testo di

un messaggio.

Per supportare un’interrogazione dinamica, dxxRetrieveXML() utilizza un

parametro di input, override. In base all’input overrideType, l’applicazione può

sostituire SQL_stmt per l’associazione SQL o le condizioni in RDB_node per

l’associazione RDB_node nel file DAD. Il parametro di input overrideType viene

utilizzato per chiarire il tipo di override.

I requisiti del file DAD per dxxRetrieveXML() sono gli stessi utilizzati per

dxxGenXML(). L’unica differenza è che il file DAD non è un parametro di input

per dxxRetrieveXML(), ma è il nome di una raccolta XML abilitata.

194 XML Extender - Amministrazione e programmazione

Page 205: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Sintassi:

dxxRetrieveXML(char(collectionName) collectionName, /* input */

char(resultTabName) resultTabName, /* input */

char(resultColumn) result_column,

char(validColumn) valid_column,

integer overrideType, /* input */

varchar(varchar_value) override,

integer maxRows, /* input */

integer numRows, /* output */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Dove varchar_value è 32672 per Windows e UNIX e 16366 per iSeries e z/OS.

Parametri:

Tabella 54. Parametri di dxxRetrieveXML()

Parametro Descrizione Parametro

IN/OUT

collectionName Il nome della raccolta XML abilitata. IN

resultTabName Il nome della tabella dei risultati, che

deve già essere presente prima della

chiamata. La tabella contiene solo una

colonna di tipo XMLVARCHAR o

XMLCLOB.

IN

resultColName Il nome della colonna nella tabella dei

risultati in cui sono memorizzati i

documenti XML composti.

IN

resultValidCol Il nome della colonna che indica se il

documento XML è valido quando viene

convalidato rispetto a una DTD

(document type definition).

IN

overrideType Un indicatore relativo al seguente tipo di

parametro override:

v NO_OVERRIDE: Nessuna

sostituzione.

v SQL_OVERRIDE: Sostituzione da

parte di SQL_stmt.

v XML_OVERRIDE: Sostituzione da

parte di una condizione basata sul

percorso.

IN

override Sostituisce la condizione nel file DAD. Il

valore di input si basa su overrideType.

v NO_OVERRIDE: Una stringa NULL.

v SQL_OVERRIDE: Un’istruzione SQL

valida. Utilizzando overrideType, è

necessario usare l’associazione SQL

utilizzata nel file DAD. L’istruzione

SQL di input sostituisce SQL_stmt nel

file DAD.

v XML_OVERRIDE: una stringa che

contiene una o più espressioni separate

dalla parola AND. Utilizzando

overrideType, è necessario usare

l’associazione RDB_node nel file DAD.

IN

Capitolo 10. Procedure memorizzate di XML Extender 195

Page 206: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 54. Parametri di dxxRetrieveXML() (Continua)

Parametro Descrizione Parametro

IN/OUT

maxRows Il numero massimo di righe nella tabella

dei risultati.

IN

numRows Il numero reale di righe generate nella

tabella dei risultati.

OUT

returnCode Il codice di ritorno dalla procedura

memorizzata.

OUT

returnMsg Il testo di messaggio restituito in caso di

errore.

OUT

Esempi:

Il seguente frammento è un esempio di chiamata a dxxRetrieveXML(). In questo

esempio, si assume che venga creata una tabella di risultati denominata

XML_ORDER_TAB e che la tabella abbia una colonna di tipo XMLVARCHAR. Un

esempio operativo completo si trova in install_dxx/samples/extenders/db2xml/c/qcsrc(rtrx).

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char collection[32]; /* buffer dad */

char result_tabname[160]; /* nome della tabella dei risultati */

char result_colname[129]; /* nome della colonna per

il documento dei risultati*/

char result_valname[129]; /* nome della colonna

per i risultati della convalida*/

char override[2]; /* override, impostata su NULL*/

short overrideType; /* definito in dxx.h */

short max_row; /* numero massimo di righe */

short num_row; /* numero effettivo di righe */

long returnCode; /* codice ritorno errore */

char returnMsg[1024]; /* testo messaggio di errore */

short dadbuf_ind;

short rtab_ind;

short rcol_ind;

short rval_ind;

short ovtype_ind;

short ov_inde;

short maxrow_ind;

short numrow_ind;

short returnCode_ind;

short returnMsg_ind;

EXEC SQL END DECLARE SECTION;

/* crea la tabella */

EXEC SQL CREATE TABLE xml_order_tab (xmlorder XMLVarchar);

/* inizializza la variabile host e gli indicatori */

strcpy(collection,"sales_ord");

strcpy(result_tabname,"xml_order_tab");

override[0] = ’\0’;

overrideType = NO_OVERRIDE;

max_row = 500;

num_row = 0;

196 XML Extender - Amministrazione e programmazione

Page 207: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

returnCode = 0;

msg_txt[0] = ’\0’;

collection_ind = 0;

rtab_ind = 0;

rcol_ind = 0;

rval_ind = 0;

ov_ind = -1;

ovtype_ind = 0;

maxrow_ind = 0;

numrow_ind = -1;

returnCode_ind = -1;

returnMsg_ind = -1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxRetrieve(:collection:collection_ind;

:result_tabname:rtab_ind,

:result_colname:rcol_ind,

:result_calname:rval_ind,

:overrideType:ovtype_ind,:override:ov_ind,

:max_row:maxrow_ind,:num_row:numrow_ind,

:returnCode:returnCode_ind,:returnMsg:returnMsg_ind);

Argomenti correlati:

v “Procedure memorizzate di composizione di XML Extender - Panoramica” a

pagina 191

Attività correlate:

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

v “Composizione di raccolte XML utilizzando l’associazione RDB_node” a pagina

62

v “Composizione dei documenti XML utilizzando l’associazione SQL” a pagina 59

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxGenXMLClob

Scopo:

Come input, dxxGenXMLClob acquisisce un buffer contenente DAD. Esso crea i

documenti XML utilizzando i dati memorizzati nelle tabelle di raccolta XML

specificate da <Xcollection> in DAD e restituisce il primo e generalmente l’unico

documento XML generato nel CLOB resultDoc.

Sintassi:

dxxGenXMLClob(CLOB(100k) DAD /*input*/

integer overrideType, /*input*/

varchar(varchar_value) override, /*input*/

CLOB(1M) resultDoc, /*output*/

integer valid, /*output*/

integer numDocs, /*output*/

long returnCode, /*output*/

varchar(1024) returnMsg) /*output*/

Dove varchar_value è 32672 per Windows e UNIX e 16366 per i5/OS e z/OS.

Capitolo 10. Procedure memorizzate di XML Extender 197

Page 208: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Parametri:

Tabella 55. Parametri dxxGenXMLClob

Parametro Descrizione Parametro IN/OUT

DAD Un CLOB contenente il file

DAD.

IN

overrideType Un indicatore relativo al tipo

di parametro override:

NO_OVERRIDE

Nessuna

sostituzione.

SQL_OVERRIDE

Sostituzione da parte

di SQL_stmt

XML_OVERRIDE

Sostituzione da parte

di una condizione

basata sul percorso.

IN

override Sostituisce la condizione nel

file DAD. Il valore di input si

basa su overrideType.

NO_OVERRIDE

Una stringa NULL.

SQL_OVERRIDE

Un’istruzione SQL

valida. Utilizzando

overrideType, è

necessario usare

l’associazione SQL

nel file DAD.

L’istruzione SQL di

input sostituisce

SQL_stmt nel file

DAD.

XML_OVERRIDE

Una stringa che

contiene una o più

espressioni separate

dalla parola AND.

Utilizzando

overrideType, è

necessario usare

l’associazione

RDB_node nel file

DAD.

IN

resultDoc Un CLOB contenente il

documento XML composto.

OUT

198 XML Extender - Amministrazione e programmazione

Page 209: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 55. Parametri dxxGenXMLClob (Continua)

Parametro Descrizione Parametro IN/OUT

valid valid è impostato nel modo

seguente:

v If VALIDATION=YES then

valid=1 per una convalida

corretta o valid=0 per una

convalida non corretta.

v If VALIDATION=NO then

valid=NULL.

OUT

numDocs Il numero di documenti XML

che verrebbero generati dai

dati di input.

Nota: attualmente, viene

restituito solo il primo

documento.

OUT

returnCode Il codice di ritorno dalla

procedura memorizzata.

OUT

returnMsg Il testo di messaggio

restituito in caso di errore.

OUT

La dimensione del parametro CLOB è 1 MB. Se sono presenti file CLOB di

dimensioni superiori a 1 MB, XML Extender fornisce un file di comando per

ridefinire il parametro della procedura memorizzata. Scaricare il file crtgenxc.zip

dal sito Web di DB2 XML Extender. Tale file ZIP contiene i seguenti programmi:

crtgenxc.db2

Per l’utilizzo su XML Extender V7.2 FixPak 5 e versioni successive per

UNIX e Windows.

crtgenxc.iseries

Per l’utilizzo con XML Extender per iSeries

crtgenxc.zos.jcl e crtgenxc.zos.cmd

Per l’utilizzo con XML Extender per OS/390 V7, APAR PQ58249 e versioni

successive.

Per specificare la lunghezza CLOB: aprire il file in un editor e modificare il

parametro resultDoc, mostrato nel seguente esempio.

out resultDoc clob(dimensione_clob),

Consiglio sulla dimensione: Il limite di dimensione del parametro resultDoc

dipende dalla configurazione del sistema, ma tenere presente che la quantità

specificata in questo parametro è quella assegnata da JDBC, indipendentemente

dalla dimensione del documento. La dimensione dovrebbe contenere i file XML di

dimensioni maggiori, ma non deve superare 1.5 gigabyte.

Per eseguire il file di comando su UNIX o Windows, dalla riga comandi DB2 e

dalla directory contenente il file, immettere:

db2 -tf crtgenxc.db2

Argomenti correlati:

v “Procedure memorizzate di composizione di XML Extender - Panoramica” a

pagina 191

Attività correlate:

Capitolo 10. Procedure memorizzate di XML Extender 199

Page 210: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

v “Composizione di raccolte XML utilizzando l’associazione RDB_node” a pagina

62

v “Composizione dei documenti XML utilizzando l’associazione SQL” a pagina 59

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxRetrieveXMLClob

Scopo:

La procedura memorizzata dxxRetrieveXMLClob abilita la composizione di

documenti dai dati relazionali.

I requisiti per l’utilizzo di dxxRetrieveXMLClob sono gli stessi utilizzati per

dxxGenXMLClob. L’unica differenza è che DAD non è un parametro di input per

dxxRetrieveXMLClob, ma è il nome della raccolta XML abilitata.

Sintassi:

dxxRetrieveXMLClob(varchar(collectionName) collectionName /*input*/

integer overrideType, /*input*/

varchar(varchar_value) override, /*input*/

CLOB(1M) resultDoc, /*output*/

integer valid, /*output*/

integer numDocs, /*output*/

integer returnCode, /*output*/

varchar(1024) returnMsg) /*output*/

Parametri:

Tabella 56. Parametri dxxRetrieveXMLClob

Parametro Descrizione Parametro

IN/OUT

collectionName Il nome della raccolta XML abilitata. IN

overrideType Un indicatore relativo al tipo di

parametro override:

NO_OVERRIDE

Nessuna sostituzione.

SQL_OVERRIDE

Sostituzione da parte di

SQL_stmt

XML_OVERRIDE

Sostituzione da parte di una

condizione basata sul percorso.

IN

200 XML Extender - Amministrazione e programmazione

Page 211: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 56. Parametri dxxRetrieveXMLClob (Continua)

Parametro Descrizione Parametro

IN/OUT

override Sostituisce la condizione nel file DAD. Il

valore di input si basa su overrideType.

NO_OVERRIDE

Una stringa NULL.

SQL_OVERRIDE

Un’istruzione SQL valida.

Utilizzando overrideType, è

necessario usare l’associazione

SQL nel file DAD. L’istruzione

SQL di input sostituisce

SQL_stmt nel file DAD.

XML_OVERRIDE

Una stringa che contiene una o

più espressioni separate dalla

parola AND. Utilizzando

overrideType, è necessario usare

l’associazione RDB_node nel file

DAD.

IN

resultDoc Un CLOB contenente il documento XML

composto.

IN

valid valid è impostato nel modo seguente:

v If VALIDATION=YES then valid=1 per

una convalida corretta o valid=0 per

una convalida non corretta.

v If VALIDATION=NO then

valid=NULL.

OUT

numDocs Il numero di documenti XML che

verrebbero generati dai dati di input.

NOTA: attualmente, viene restituito solo

il primo documento.

OUT

returnCode Il codice di ritorno dalla procedura

memorizzata.

OUT

returnMsg Il testo di messaggio restituito in caso di

errore.

OUT

La dimensione del parametro CLOB è 1 MB.

Argomenti correlati:

v “Procedure memorizzate di composizione di XML Extender - Panoramica” a

pagina 191

Attività correlate:

v “Procedure memorizzate che restituiscono CLOB” a pagina 184

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

v “Composizione di raccolte XML utilizzando l’associazione RDB_node” a pagina

62

v “Composizione dei documenti XML utilizzando l’associazione SQL” a pagina 59

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Capitolo 10. Procedure memorizzate di XML Extender 201

Page 212: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Procedure memorizzate di decomposizione di XML Extender

Procedure memorizzate di decomposizione di XML Extender -

Panoramica

Le procedure memorizzate di decomposizione dxxInsertXML() e dxxShredXML()

sono utilizzate per interrompere o suddividere i documenti XML in entrata e per

memorizzare i dati in tabelle di database nuove o esistenti. La procedura

memorizzata dxxInsertXML() utilizza un nome di raccolta XML abilitata come

input. La procedura memorizzata dxxShredXML() utilizza invece un file DAD

come input; essa non richiede una raccolta XML abilitata.

Procedura memorizzata dxxShredXML()

Scopo:

Decompone i documenti XML in base ad un’associazione del file DAD e

memorizza il contenuto degli elementi e degli attributi XML in specifiche tabelle

DB2. Per il corretto funzionamento di dxxShredXML(), tutte le tabelle specificate

nel file DAD devono essere presenti e tutte le colonne e i relativi tipi di dati

specificati in DAD devono essere coerenti con le tabelle esistenti. La procedura

memorizzata richiede che le colonne specificate nella condizione di unione di

DAD, corrispondano alle relazioni di chiavi primaria-esterna nelle tabelle esistenti.

Le colonne della condizione di unione specificate in RDB_node dell’element_node

devono essere presenti nelle tabelle.

Il frammento della procedura memorizzata in questa sezione è a scopo di

spiegazione.

Sintassi:

dxxShredXML(CLOB(100K) DAD, /* input */

CLOB(1M) xmlobj, /* input */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Parametri:

Tabella 57. Parametri di dxxShredXML()

Parametro Descrizione Parametro

IN/OUT

DAD Un CLOB contenente il file DAD. IN

xmlobj Un documento XML in un tipo

XMLCLOB

IN

returnCode Il codice di ritorno dalla procedura

memorizzata.

OUT

returnMsg Il testo di messaggio restituito in caso di

errore.

OUT

Esempi:

Il seguente frammento è un esempio di chiamata a dxxShredXML().

202 XML Extender - Amministrazione e programmazione

Page 213: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

SQL TYPE is CLOB_FILE dadFile; /* file DAD */

SQL TYPE is CLOB_FILE dadFile; /* file DAD */

SQL TYPE è CLOB_FILE xmlDoc; /* documento XML di input */

SQL TYPE is CLOB_FILE xmlFile; /* file XML di input */

long returnCode; /* codice errore */

char returnMsg[1024]; /* testo messaggio di errore */

short dad_ind;

short xmlDoc_ind;

short returnCode_ind;

short returnMsg_ind;

EXEC SQL END DECLARE SECTION;

/* inizializza la variabile host e gli indicatori */

strcpy(dadFile.name,"install_dxx

/samples/extenders/db2xml/dad/getstart_xcollection.dad

");

dadFile.name_length=strlen("install_dxx

/samples/extenders/db2xml/dad/getstart_xcollection.dad

");

dadFile.file_option=SQL_FILE_READ;

strcpy(xmlFile.name,"install_dxx

/samples/extenders/db2xml/xml/getstart.xml");

xmlFile.name_length=strlen("install_dxx

/samples/extenders/db2xml/xml/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;

/* Richiama la procedura memorizzata */

EXEC SQL CALL DB2XML.dxxShredXML(:dad:dad_ind;

:xmlDoc:xmlDoc_ind,

:returnCode:returnCode_ind,

:returnMsg:returnMsg_ind);

Argomenti correlati:

v “Procedure memorizzate di decomposizione di XML Extender - Panoramica” a

pagina 202

Attività correlate:

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

v “Decomposizione di una raccolta XML utilizzando l’associazione RDB_node” a

pagina 66

v “Decomposizione di documenti XML in dati di database DB2” a pagina 94

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxInsertXML()

Scopo:

Capitolo 10. Procedure memorizzate di XML Extender 203

Page 214: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Utilizza due parametri di input, un file name e il documento XML che deve essere

decomposto, e restituisce due parametri di output, un codice di ritorno e un

messaggio.

Sintassi:

dxxInsertXML(char(collectionName) collectionName, /*input*/

CLOB(1M) xmlobj, /* input */

long returnCode, /* output */

varchar(1024) returnMsg) /* output */

Parametri:

Tabella 58. Parametri di dxxInsertXML()

Parametro Descrizione Parametro IN/OUT

collectionName Il nome della raccolta XML

abilitata.

IN

xmlobj Un documento XML in un tipo

CLOB

IN

returnCode Il codice di ritorno dalla procedura

memorizzata.

OUT

returnMsg Il testo di messaggio restituito in

caso di errore.

OUT

Esempi:

Nel seguente esempio di frammentazione, la chiamata a dxxInsertXML() richiama

il documento XML di input install_dxx/xml/order1.xml e inserisce i dati nelle

tabelle di raccolta SALES_ORDER, secondo l’associazione specificata nel file DAD

con cui è stata abilitata. Il programma operativo completo si trova in

install_dxx/samples/extenders/db2xml/c/insertx.sqx.

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char collection[64]; /* nome di una raccolta XML */

SQL TYPE è CLOB_FILE xmlDoc; /* documento XML di input */

SQL TYPE è CLOB(1M) *xmlobj=NULL;

long returnCode; /* codice errore */

char returnMsg[1024]; /* testo messaggio di errore */

short collection_ind;

short xmlDoc_ind;

short returnCode_ind;

short returnMsg_ind;

EXEC SQL END DECLARE SECTION;

/* inizializza la variabile host e gli indicatori */

strcpy(collection,"sales_ord")

strcpy(xmldoc.name,"install_dxx/samples/extenders/db2xml/xml/getstart.xml");

xmldoc.name_length=strlen(xmldoc.name);

xmldoc.file_option=SQL_FILE_READ;

returnCode = 0;

returnMsg[0] = ’\0’;

collection_ind = 0;

xmlobj_ind = 0;

returnCode_ind = -1;

returnMsg_ind = -1;

/* Richiama la procedura memorizzata */

204 XML Extender - Amministrazione e programmazione

Page 215: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

EXEC SQL VALUES (:xmlfile) INTO :*xmlDoc;

EXEC SQL CALL DB2XML.dxxInsertXML(:collection:collection_ind;

:*xmlDoc:xmlobj_ind,

:returnCode:returnCode_ind,:returnMsg:returnMsg_ind);

Argomenti correlati:

v “Procedure memorizzate di decomposizione di XML Extender - Panoramica” a

pagina 202

Attività correlate:

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

v “Decomposizione di una raccolta XML utilizzando l’associazione RDB_node” a

pagina 66

v “Decomposizione di documenti XML in dati di database DB2” a pagina 94

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Capitolo 10. Procedure memorizzate di XML Extender 205

Page 216: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

206 XML Extender - Amministrazione e programmazione

Page 217: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 11. Procedure memorizzate e funzioni di XML

Extender per MQSeries

Procedure memorizzate XML Extender e funzioni per MQSeries -

Panoramica

XML Extender fornisce due metodi per la memorizzazione e l’accesso ai dati XML.

Utilizzando il metodo delle colonne XML, è possibile memorizzare i documenti

XML in una tabella DB2® durante l’interrogazione, l’aggiornamento e il richiamo

del contenuto dei documenti. Le funzioni definite dall’utente XML MQ consentono

di interrogare i documenti XML e pubblicare quindi i risultati su una coda di

messaggi. Inoltre, è possibile utilizzare la raccolta XML per memorizzare il

contenuto senza tag di un documento XML in una o più tabelle o comporre i

documenti XML da più tabelle. Mediante le procedure memorizzate XML MQ, è

possibile richiamare un documento XML da una coda di messaggi, decomporlo in

dati senza tag e memorizzare tali dati nelle tabelle DB2. È inoltre possibile

comporre un documento XML dai dati DB2 e inviare il documento a una coda di

messaggi MQSeries®.

MQSeries supporta tre modelli di messaggistica per distribuire i dati e i documenti

XML:

datagrammi

I messaggi vengono inviati a un’unica destinazione senza aspettarsi una

risposta.

pubblicazione/sottoscrizione

Uno o più publisher inviano un messaggio a un servizio di pubblicazione

che distribuisce il messaggio ai sottoscrittori interessati.

richiesta/risposta

I messaggi vengono inviati a un’unica destinazione e il mittente si aspetta

di ricevere una risposta.

MQSeries può essere utilizzato in diversi modi. I datagrammi semplici vengono

scambiati per coordinare più applicazioni, per scambiare informazioni, per

richiedere servizi e per fornire una notifica su eventi iteressanti. La

pubblicazione/sottoscrizione viene utilizzata più spesso per diffondere

informazioni in tempo reale in maniera sincronizzata. Il modello di

richiesta/risposta viene di solito utilizzato come forma semplice di una chiamata a

una procedure remota pseudo-sincronizzata. Combinando questi stili di base, è

possibile creare modelli più complessi.

Le tecniche di messaggistica fondamentali qui descritte sono utilizzate in diversi

modi. Poiché MQSeries è disponibile su diversi sistemi operativi, esso fornisce un

importante meccanismo per collegare diverse applicazioni da ambienti simili o

differenti.

Per utilizzare le funzioni MQXML e le procedure memorizzate, verificare che il

seguente software sia installato.

v DB2 Database™ Versione 9.1 o successivo

© Copyright IBM Corp. 1999 - 2006 207

Page 218: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v DB2 MQSeries Functions Versione 9.1 (disponibile come funzione opzionale di

DB2 Database Versione 9.1. Maggiori informazioni sono disponibili nel manuale

DB2 Database Versione 9.1 Command Reference.)

Funzioni MQSeries per XML Extender

Funzioni MQSeries di XML Extender - Panoramica

DB2® XML Extender include le seguenti funzioni da utilizzare con MQSeries®:

v MQPublishXML

v MQReadXML

v MQReadAllXML

v MQReadXMLCLOB

v MQReadAllXMLCLOB

v MQReceiveXML

v MQReceiveAllXML

v MQRcvAllXMLCLOB

v MQReceiveXMLCLOB

v MQSENDXML

v MQSENDXMLFILE

v MQSendXMLFILECLOB

Argomenti correlati:

v “XML Extender MQSeries procedure memorizzate - Panoramica” a pagina 229

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Riferimenti correlati:

v “Funzione MQPublishXML”

v “Funzione MQRcvAllXMLCLOB” a pagina 221

v “Funzione MQRcvXMLCLOB” a pagina 224

v “Funzione MQReadAllXML” a pagina 212

v “Funzione MQReadAllXMLCLOB” a pagina 215

v “Funzione MQReadXML” a pagina 210

v “Funzione MQReadXMLCLOB” a pagina 214

v “Funzione MQReceiveAllXML” a pagina 219

v “Funzione MQReceiveXML” a pagina 217

v “Funzione MQReceiveXMLCLOB” a pagina 223

v “Funzione MQSendXMLFILECLOB” a pagina 228

v “Funzione MQSENDXML” a pagina 225

v “Funzione MQSENDXMLFILE” a pagina 226

Funzione MQPublishXML

Scopo:

La funzione MQPublishXML pubblica i dati XMLVARCHAR e XMLCLOB su

MQSeries. Consultare il seguente sito Web per ulteriori informazioni:

208 XML Extender - Amministrazione e programmazione

Page 219: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

http://www.software.ibm.com/MQSeries

La funzione MQPublishXML pubblica i dati XML contenuti in dati-msg nel

publisher MQSeries specificato dal servizio-publisher utilizzando la qualità del

criterio di pubblicazione criterio-pubblicazione. L’argomento del messaggio viene

specificato opzionalmente dall’argomento. È inoltre possibile specificare un

identificativo di correlazione del messaggio definito dall’utente tramite id-correl. La

funzione restituisce 1 in caso di operazione riuscita.

Sintassi:

�� MQPublishXML ( dati-msg , )

servizio-publisher

argomento

servizio-publisher

,

criterio-pubblicazione

��

Parametri:

Tabella 59. Parametri MQPublishXML

Parametro Tipo di dati Descrizione

servizio-publisher VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

a cui inviare i messaggi.

Quando specificato, il

servizio-publisher si riferisce a

un punto di servizio del

publisher definito nel file di

repository AMT.XML. Se il

servizio-publisher non è

specificato, verrà utilizzato

DB2.DEFAULT.PUBLISHER.

La dimensione massima del

servizio-publisher è 48 byte.

criterio-pubblicazione VARCHAR(48) Una stringa contenente il

criterio di pubblicazione

MQSeries AMI utilizzato per

gestire questo messaggio.

Quando specificato,

criterio-pubblicazione si

riferisce a un criterio definito

nel file di repository

AMT.XML. Il criterio di

pubblicazione definisce

inoltre una serie di qualità di

opzioni di pubblicazione da

applicare alle opzioni

dell’operazione di

messaggistica. Tali opzioni

includono la priorità e la

permanenza del messaggio.

Se il criterio-servizio non è

specificato, verrà utilizzato

DB2.DEFAULT.POLICY

predefinito. La dimensione

massima di criterio-servizio è

48 byte. Per ulteriori

informazioni, consultare il

manuale MQSeries

Application Messaging

Interface.

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 209

Page 220: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 59. Parametri MQPublishXML (Continua)

Parametro Tipo di dati Descrizione

dati-msg XMLVARCHAR o XMLCLOB Un’espressione

XMLVARCHAR o XMLCLOB

contenente i dati da inviare

tramite MQSeries.

argomento VARCHAR(40) Una stringa contenente

l’argomento in cui deve

essere pubblicato il

messaggio. Se non viene

specificato alcun argomento,

non ne verrà associato alcuno

al messaggio. La dimensione

massima dell’argomento è 40

byte. È possibile elencare più

argomenti all’interno di una

stringa di argomento,

separando ogni argomento

con ″:″.

Codici di ritorno:

In caso di esito positivo, le funzioni MQPublishXML restituiscono 1. Il valore 0

viene restituito se la funzione ha esito negativo.

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Funzione MQReadXML

Scopo:

La funzione MQREADXML restituisce i dati XMLVARCHAR dal percorso

MQSeries specificato da servizio-ricezione. Essa utilizza la qualità di criterio-ricezione.

La funzione MQREADXML non rimuove i messaggi dalla coda associata a

servizio-ricezione

Sintassi:

�� MQREADXML ( )

servizio-ricezione

servizio-ricezione

,

criterio-ricezione

��

Parametri:

210 XML Extender - Amministrazione e programmazione

Page 221: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 60. Parametri MQReadXML

Parametro Tipo di dati Descrizione

servizio-ricezione VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

da cui ricevere i messaggi.

Quando è specificato

servizio-ricezione, esso si

riferisce al punto di servizio

definito nel file di repository

AMT.XML. Se

servizio-ricezione non è

specificato, verrà utilizzato

DB2.DEFAULT.SERVICE. La

dimensione massima del

servizio-ricezione è 48 byte.

criterio-ricezione VARCHAR(48) Una stringa contenente il

criterio di servizio MQSeries

AMI utilizzato per gestire un

messaggio. Quando è

specificato criterio-ricezione,

esso si riferisce a un criterio

definito nel file di repository

AMT.XML. Un criterio di

ricezione definisce una serie

di qualità di opzioni di

ricezione, applicate

all’operazione di

messaggistica. Tali opzioni

includono la priorità e la

permanenza del messaggio.

Se criterio-ricezione non è

specificato, verrà utilizzato

DB2.DEFAULT.POLICY

predefinito. La dimensione

massima di criterio-ricezione è

48 byte.

Risultati:

Quando un messaggio in una coda viene letto correttamente, MQREADXML

restituisce db2xml.xmlvarchar. Viene restituito NULL se non è disponibile alcun

messaggio.

Esempi:

Esempio 1: questo esempio legge il messaggio presente nell’intestazione della coda,

specificato dal servizio predefinito DB2.DEFAULT.SERVICE. Utilizza il criterio

predefinito DB2.DEFAULT.POLICY per leggere il messaggio.

values DB2XML.MQREADXML()

Questo esempio restituisce il contenuto del messaggio come XMLVARCHAR. Se

non è disponibile alcun messaggio, viene restituito NULL.

Esempio 2: questo esempio legge il messaggio presente nell’intestazione della coda

specificata dal servizio MYSERVICE utilizzando il criterio predefinito

DB2.DEFAULT.POLICY.

values DB2XML.MQREADXML(’MYSERVICE’)

Nell’esempio, il contenuto del messaggio viene restituito come XMLVARCHAR. Se

non è disponibile alcun messaggio, viene restituito NULL.

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 211

Page 222: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Esempio 3: questo esempio legge il messaggio presente nell’intestazione della coda

specificata dal servizio MYSERVICE utilizzando il criterio MYPOLICY.

values DB2XML.MQREADXML(’MYSERVICE’,’MYPOLICY’)

Il contenuto del messaggio viene restituito come XMLVARCHAR in caso di

operazione riuscita. Se non è disponibile alcun messaggio, viene restituito NULL.

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Funzione MQReadAllXML

Scopo:

La funzione MQReadAllXML restituisce una tabella contenente i messaggi e i

relativi metadati dal percorso MQSeries specificato dal servizio-ricezione utilizzando

la qualità del criterio-servizio. Tale operazione non rimuove i messaggi dalla coda

associata al servizio-ricezione. Se si specifica num-righe, verrà restituito un massimo

di messaggi relativi al num-righe. In caso contrario, verranno restituiti tutti i

messaggi disponibili.

Sintassi:

�� MQREADALLXML ( )

servizio-ricezione

num-righe

servizio-ricezione

,

criterio-servizio

��

Parametri:

Tabella 61. Parametri MQReadAllXML

Parametro Tipo di dati Descrizione

servizio-ricezione VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

da cui leggere i messaggi.

Quando specificato,

servizio-ricezione deve fare

riferimento a un punto di

servizio definito nel file di

repository AMT.XML.

Tuttavia, se servizio-ricezione

non è specificato, verrà

utilizzato

DB2.DEFAULT.SERVICE. La

dimensione massima del

servizio-ricezione è 48 byte.

212 XML Extender - Amministrazione e programmazione

Page 223: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 61. Parametri MQReadAllXML (Continua)

Parametro Tipo di dati Descrizione

criterio-servizio VARCHAR(48) Una stringa contenente il

criterio di servizio MQSeries

AMI utilizzato per gestire

questo messaggio. Quando è

specificato criterio-servizio,

esso si riferisce a un criterio

definito nel file di repository

AMT.XML. La dimensione

massima del

servizio-ricezione è 48 byte.

Per ulteriori informazioni fare

riferimento al manuale

MQSeries Application

Messaging Interface.

num-righe INTEGER Un numero intero positivo

contenente il numero

massimo di messaggi da

restituire tramite la funzione.

Risultati:

La funzione MQReadAllXML restituisce una tabella contenente i messaggi e i

relativi metadati, come descritto di seguito.

Tabella 62. Tabella della serie di risultati

Nome colonna Tipo di dati Descrizione

MSG XMLVARCHAR Il contenuto del messaggio

MQSeries. La lunghezza

massima è 4Kbyte.

CORRELID VARCHAR(24) Un ID di correlazione che è

possibile utilizzare in

correlazione ai messaggi.

TOPIC VARCHAR(40) L’argomento in cui è stato

pubblicato il messaggio, se

disponibile.

QNAME VARCHAR(48) Il nome coda in cui è stato

ricevuto il messaggio.

MSGID VARCHAR(24) L’identificativo univoco

assegnato da MQSeries per

un messaggio.

MSGFORMAT VARCHAR(8) Il formato del messaggio

come definito da MQSeries.

Le stringhe classiche hanno il

formato MQSTR.

Esempi:

Esempio 1: tutti i messaggi dalla coda che sono specificati dal servizio predefinito

DB2.DEFAULT.SERVICE vengono letti utilizzando il criterio predefinito

DB2.DEFAULT.POLICY. I messaggi e tutti i metadati vengono restituiti in formato

tabella.

select * from table (DB2XML.MQREADALLXML()) t

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 213

Page 224: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Esempio 2: Tutti i messaggi specificati dal servizio MYSERVICE utilizzando il

criterio predefinito DB2.DEFAULT.POLICY. Vengono restituite solo le colonne msg

e correlid. La coda messaggi ha il formato tabella, nel cui caso è possibile

selezionare i campi desiderati.

select t.MSG, t.CORRELID from table (DB2XML.MQREADALLXML(’MYSERVICE’)) t

Esempio 3: la coda specificata dal servizio predefinito DB2.DEFAULT.SERVICE

viene letta utilizzando il criterio predefinito DB2.DEFAULT.POLICY. Vengono

restituiti solo i messaggi con CORRELID ’1234’. Vengono letti e restituiti un

massimo di 10 messaggi. Vengono restituite tutte le colonne.

select * from table (DB2XML.MQREADALLXML()) t where t.CORRELID = ’1234’

Esempio 4: i messaggi specificati dal servizio predefinito DB2.DEFAULT.SERVICE

vengono letti utilizzando il criterio predefinito DB2.DEFAULT.POLICY. Vengono

restituite tutte le colonne.

select * from table (DB2XML.MQREADALLXML(10)) t

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Funzione MQReadXMLCLOB

Scopo:

La funzione MQREADXMLCLOB restituisce dati XMLCLOB dal percorso

MQSeries specificato da receive-service mediante la politica QoS (quality of

service)receive-policy. L’esecuzione di questa operazione non rimuove il messaggio

dalla coda associata a receive-service. Verrà restituito il messaggio in cima alla coda.

Il valore di ritorno è un XMLCLOB contenente i messaggi. Se non può essere

restituito alcun messaggio, verrà restituito un valore NULL.

Sintassi:

�� MQReadXMLCLOB ( )

receive-service

receive-service

,

receive-policy

��

Parametri:

214 XML Extender - Amministrazione e programmazione

Page 225: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 63. Parametri di MQReadXMLCLOB

Parametro Tipo di dati Descrizione

receive-service VARCHAR(48) Una stringa contenente la

destinazione logica di

MQSeries da cui deve essere

ricevuto il messaggio. Se

specificato, receive-service fa

riferimento a un punto di

servizio definito nel file del

repository AMT.XML. Se

receive-service non viene

specificato, allora verrà

utilizzato

DB2.DEFAULT.SERVICE. La

dimensione massima di

receive-service è 48 byte.

receive-policy VARCHAR(48) Una stringa contenente la

politica di servizio AMI di

MQSeries utilizzata per la

gestione di questo messaggio.

Quando viene specificato

receive-policy, questo fa

riferimento a una politica

definita nel file del repository

AMT.XML. Una politica di

servizio definisce una serie di

opzioni QoS che vengono

applicate all’operazione di

messaggistica. Queste opzioni

includono la priorità e la

permanenza dei messaggi. Se

receive-policy non viene

specificato, allora verrà

utilizzato il

DB2.DEFAULT.POLICY

predefinito. La dimensione

massima di receive-service è

48 byte.

Risultati:

Quando un messaggio sulla coda è stato letto correttamente, MQREADXMLCLOB

restituisce un db2xml.xmlclob. Se non è disponibile alcun messaggio, viene

restituito NULL.

Funzione MQReadAllXMLCLOB

Scopo:

La funzione MQReadAllXMLCLOB restituisce una tabella contenente i messaggi e i

relativi metadati dal percorso MQSeries specificato dal servizio-ricezione utilizzando

la qualità del servizio-ricezione del criterio di servizio. Tale operazione non

rimuove i messaggi dalla coda associata al servizio-ricezione. Se si specifica

num-righe, verrà restituito un massimo di messaggi relativi al num-righe. In caso

contrario, verranno restituiti tutti i messaggi disponibili.

Sintassi:

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 215

Page 226: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

�� MQReadAllXMLCLOB ( )

servizio-ricezione

num-righe

servizio-ricezione

,

criterio-servizio

��

Parametri:

Tabella 64. Parametri MQReadAllXMLCLOB

Parametro Tipo di dati Descrizione

servizio-ricezione VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

da cui leggere i messaggi.

Quando specificato,

servizio-ricezione deve fare

riferimento a un punto di

servizio definito nel file di

repository AMT.XML.

Tuttavia, se servizio-ricezione

non è specificato, verrà

utilizzato

DB2.DEFAULT.SERVICE. La

dimensione massima del

servizio-ricezione è 48 byte.

criterio-servizio VARCHAR(48) Una stringa contenente il

criterio di servizio MQSeries

AMI utilizzato per gestire

questo messaggio. Quando è

specificato criterio-servizio,

esso si riferisce a un criterio

definito nel file di repository

AMT.XML. La dimensione

massima di criterio-servizio è

48 byte.

num-righe INTEGER Un numero intero positivo

contenente il numero

massimo di messaggi da

restituire tramite la funzione.

Risultati:

La funzione MQReadAllXMLCLOB restituisce una tabella contenente i messaggi e i

relativi metadati, come descritto di seguito.

Tabella 65. Tabella della serie di risultati MQReadAllXMLCLOB

Nome colonna Tipo di dati Descrizione

MSG XMLCLOB Il contenuto del messaggio

MQSeries, con lunghezza

massima di 1MB.

CORRELID VARCHAR(24) Un ID di correlazione che è

possibile utilizzare in

correlazione ai messaggi.

TOPIC VARCHAR(40) L’argomento in cui è stato

pubblicato il messaggio, se

disponibile.

QNAME VARCHAR(48) Il nome coda in cui è stato

ricevuto il messaggio.

216 XML Extender - Amministrazione e programmazione

Page 227: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 65. Tabella della serie di risultati MQReadAllXMLCLOB (Continua)

Nome colonna Tipo di dati Descrizione

MSGID VARCHAR(24) L’identificativo univoco

assegnato da MQSeries per

questo messaggio.

MSGFORMAT VARCHAR(8) Il formato del messaggio

come definito da MQSeries.

Le stringhe classiche hanno il

formato MQSTR.

Esempio 1: tutti i messaggi dalla coda che sono specificati dal servizio predefinito

DB2.DEFAULT.SERVICE vengono letti utilizzando il criterio predefinito

DB2.DEFAULT.POLICY. I messaggi e tutti i metadati vengono restituiti in formato

tabella.

select * from table (DB2XML.MQREADALLXMLCLOB()) t

Esempio 2:i messaggi dell’intestazione coda vengono specificati dal servizio

MYSERVICE utilizzando il criterio predefinito DB2.DEFAULT.POLICY. Vengono

restituite solo le colonne msg e correlid.

select t.MSG, t.CORRELID

from table (DB2XML.MQREADALLXMLCLOB(’MYSERVICE’)) t

Esempio 3: l’intestazione della coda specificata dal servizio predefinito

DB2.DEFAULT.SERVICE viene letta utilizzando il criterio predefinito

DB2.DEFAULT.POLICY. Vengono restituiti solo i messaggi con CORRELID ’1234’.

Vengono restituite tutte le colonne.

select *

from table (DB2XML.MQREADALLXMLCLOB()) t where t.CORRELID = ’1234’

Esempio 4: i primi 10 messaggi dell’intestazione coda, specificati dal servizio

predefinito DB2.DEFAULT.SERVICE vengono letti utilizzando il criterio predefinito

DB2.DEFAULT.POLICY. Vengono restituite tutte le colonne.

select * from table (DB2XML.MQREADALLXMLCLOB(10)) t

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Funzione MQReceiveXML

Scopo:

MQReceiveXML rimuove un messaggio associato al servizio-ricezione dalla coda. La

funzione restituisce i dati XMLVARCHAR dal percorso MQSeries specificato dalla

funzione servizio-ricezione che utilizza la qualità del servizio-ricezione.

Sintassi:

�� MQReceiveXML ( )

servizio-ricezione

servizio-ricezione

,

criterio-servizio

servizio-ricezione

,

criterio-servizio

id-correl

��

Parametri:

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 217

Page 228: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 66. Parametri MQReceiveXML

Parametro Tipo di dati Descrizione

servizio-ricezione VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

da cui ricevere i messaggi.

Quando specificato,

servizio-ricezione si riferisce a

un punto di servizio definito

nel file di repository

AMT.XML. Se

servizio-ricezione non è

specificato, verrà utilizzato

DB2.DEFAULT.SERVICE. La

dimensione massima del

servizio-ricezione è 48 byte.

criterio-servizio VARCHAR(48) Una stringa contenente il

criterio di servizio MQSeries

AMI utilizzato per gestire

questo messaggio. Quando

specificato, criterio-servizio

deve fare riferimento a un

criterio definito nel file di

repository AMT.XML. Se

criterio-servizio non è

specificato, verrà utilizzato

DB2.DEFAULT.POLICY

predefinito. La dimensione

massima di criterio-servizio è

48 byte.

id-correl VARCHAR(24) Una stringa contenente un

identificativo di correlazione

facoltativo associato a questo

messaggio. L’id-correl viene

spesso specificato in scenari

di richiesta/risposta per

associare le richieste alle

repliche. Se non è specificato,

non verrà mostrato alcun ID

correlazione. La dimensione

massima di id-correl è 24 byte.

Risultati:

Le funzioni MQReceiveXML restituiscono db2xml.XMLVARCHAR se i messaggi

vengono ricevuti correttamente dalla coda. La dimensione massima di un

messaggio è 32000 byte. Viene restituito NULL se non è disponibile alcun

messaggio. Se si specifica id-correl, verrà restituito il primo messaggio con un

identificativo di correlazione corrispondente. Se non si specifica id-correl, verrà

restituito il messaggio nell’intestazione della coda. Il messaggio viene rimosso dalla

coda.

Esempi:

Esempio 1: questo esempio riceve il messaggio presente nell’intestazione della coda

ed è specificato dal servizio predefinito DB2.DEFAULT.SERVICE utilizzando il

criterio predefinito DB2.DEFAULT.POLICY.

values db2xml.MQRECEIVEXML()

Se corretto, questo esempio restituisce il contenuto di un messaggio come

XMLVARCHAR. Se non è disponibile alcun messaggio, viene restituito NULL.

218 XML Extender - Amministrazione e programmazione

Page 229: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Funzione MQReceiveAllXML

Scopo:

MQReceiveAllXML rimuove i messaggi associati al servizio-ricezione dalla coda. Se

si specifica id-correl, verranno restituiti solo i messaggi con un identificativo di

correlazione corrispondente. Se non si specifica id-correl, verrà restituito il

messaggio nell’intestazione della coda. Se si specifica num-righe, verrà restituito un

massimo di messaggi relativi al num-righe. In caso contrario, verranno restituiti

tutti i messaggi disponibili.

Sintassi:

�� MQReceiveALLXML ( )

servizio-ricezione

num-righe

servizio-ricezione

,

criterio-ricezione

servizio-ricezione

,

criterio-ricezione

id-correl

��

Parametri:

Tabella 67. Parametri MQReceiveAllXML

Parametro Tipo di dati Descrizione

servizio-ricezione VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

a cui inviare i messaggi.

Quando specificato, il

servizio-invio si riferisce a un

criterio definito nel file di

repository ATM.XML. Se

servizio-invio non è

specificato, verrà utilizzato

DB2.DEFAULT.SERVICE. La

dimensione massima di

servizio-invio è 48 byte.

criterio-ricezione VARCHAR(48) Una stringa contenente il

criterio di servizio MQSeries

AMI utilizzato per gestire

questo messaggio. Quando

specificato, criterio-ricezione

deve fare riferimento a un

criterio definito nel file di

repository AMT.XML. Se

criterio-ricezione non è

specificato, verrà utilizzato

DB2.DEFAULT.POLICY

predefinito. La dimensione

massima di criterio-ricezione è

48 byte.

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 219

Page 230: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 67. Parametri MQReceiveAllXML (Continua)

Parametro Tipo di dati Descrizione

id-correl VARCHAR(24) Una stringa contenente un

identificativo di correlazione

facoltativo associato a questo

messaggio. L’id-correl viene

spesso specificato in scenari

di richiesta/risposta per

associare le richieste alle

repliche. Se non è specificato,

non verrà mostrato alcun id

correlazione. La dimensione

massima di id-correl è 24 byte.

num-righe INTEGER Un numero intero positivo

contenente il numero

massimo di messaggi

restituiti dalla funzione.

Risultati:

Quando la coda riceve correttamente una tabella di messaggi, MQRECEIVEXML

restituisce db2xml.xmlvarchar. Viene restituito NULL se non è disponibile alcun

messaggio. I messaggi vengono restituiti come tabella di messaggi con metadati.

Nome colonna Tipo di dati Descrizione

MSG XMLVARCHAR Il contenuto del messaggio

MQSeries.

CORRELID VARCHAR(24) Un ID di correlazione che è

possibile utilizzare in

correlazione ai messaggi.

TOPIC VARCHAR(40) L’argomento in cui è stato

pubblicato il messaggio, se

disponibile.

QNAME VARCHAR(48) Il nome coda in cui è stato

ricevuto il messaggio.

MSGID CHAR(24) L’identificativo univoco

assegnato da MQSeries per

questo messaggio.

MSGFORMAT VARCHAR(8) Il formato del messaggio

come definito da MQSeries.

Le stringhe classiche hanno il

formato MQSTR.

Esempi:

Esempio 1: tutti i messaggi ricevuti dalla coda vengono specificati dal servizio

predefinito (DB2.DEFAULT.SERVICE) utilizzando il criterio predefinito

DB2.DEFAULT.POLICY. I messaggi e tutti i metadati vengono restituiti come

tabella.

select * from table (MQRECEIVEALLXML()) t

Esempio 2: tutti i messaggi vengono ricevuti dall’intestazione coda vengono

specificati dal servizio MYSERVICE utilizzando il criterio predefinito

(DB2.DEFAULT.POLICY). Vengono restituite solo le colonne MSG e CORRELID. I

messaggi hanno il formato tabella, mentre è possibile selezionare i campi

desiderati.

select t.MSG, t.CORRELID from table (MQRECEIVEALLXML(’MYSERVICE’)) t

220 XML Extender - Amministrazione e programmazione

Page 231: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Esempio 3: tutti i messaggi ricevuti dall’intestazione coda vengono specificati dal

servizio MYSERVICE utilizzando il criterio MYPOLICY che corrisponde all’id

’1234’. Vengono restituite solo le colonne MSG e CORRELID.

select t.MSG, t.CORRELID from table

(MQRECEIVEALLXML(’MYSERVICE’,’MYPOLICY’,’1234’)) t

Esempio 4: i primi 10 messaggi vengono ricevuti dall’intestazione coda e specificati

dal servizio predefinito (DB2.DEFAULT.SERVICE) utilizzando il criterio predefinito

(DB2.DEFAULT.POLICY). Vengono restituite tutte le colonne.

select * from table (MQRECEIVEALLXML(10)) t

Funzione MQRcvAllXMLCLOB

Scopo:

La funzione MQRcvAllXMLCLOB rimuove i messaggi dalla coda associata al

servizio-ricezione. Se si specifica id-correl, verranno restituiti solo i messaggi con un

identificativo di correlazione corrispondente. Se non si specifica id-correl, verranno

restituiti tutti i messaggi. Se si specifica num-righe, verrà restituito come XMLCLOB

un massimo di messaggi relativi al num-righe. In caso contrario, verranno restituiti

tutti i messaggi disponibili.

Sintassi:

�� MQRcvAllXMLCLOB ( )

servizio-ricezione

num-righe

servizio-ricezione

,

criterio-ricezione

servizio-ricezione

,

criterio-ricezione

id-correl

��

Parametri:

Tabella 68. Parametri MQRcvAllXMLCLOB

Parametro Tipo di dati Descrizione

servizio-ricezione VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

da cui ricevere i messaggi.

Quando specificato, il

servizio-ricezione si riferisce a

un criterio definito nel file di

repository AMT.XML. Se

servizio-ricezione non è

specificato, verrà utilizzato

DB2.DEFAULT.SERVICE. La

dimensione massima del

servizio-ricezione è 48 byte.

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 221

Page 232: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 68. Parametri MQRcvAllXMLCLOB (Continua)

Parametro Tipo di dati Descrizione

criterio-ricezione VARCHAR(48) Una stringa contenente il

criterio di servizio MQSeries

AMI utilizzato per gestire

questo messaggio. Quando

specificato, criterio-ricezione

deve fare riferimento a un

criterio definito nel file di

repository AMT.XML. Se

criterio-ricezione non è

specificato, verrà utilizzato

DB2.DEFAULT.POLICY

predefinito. La dimensione

massima di criterio-ricezione è

48 byte.

id-correl VARCHAR(24) Una stringa contenente un

identificativo di correlazione

facoltativo associato a questo

messaggio. L’id-correl viene

spesso specificato in scenari

di richiesta/risposta per

associare le richieste alle

repliche. Se non è specificato,

non verrà mostrato alcun id

correlazione. La dimensione

massima di id-correl è 24 byte.

num-righe INTEGER Un numero intero positivo

contenente il numero

massimo di messaggi

restituiti dalla funzione.

Risultati:

Quando una coda riceve correttamente un messaggio, MQRcvAllXMLCLOB

restituisce un XMLCLOB. Viene restituito NULL se non è disponibile alcun

messaggio. I messaggi vengono restituiti in una tabella, come descritto di seguito

Tabella 69. Tabella della serie di risultati MQRcvAllXML

Nome colonna Tipo di dati Descrizione

MSG XMLCLOB Il contenuto del messaggio

MQSeries.

CORRELID VARCHAR(24) Un ID di correlazione che è

possibile utilizzare in

correlazione ai messaggi.

TOPIC VARCHAR(40) L’argomento in cui è stato

pubblicato il messaggio, se

disponibile.

QNAME VARCHAR(48) Il nome coda in cui è stato

ricevuto il messaggio.

MSGID CHAR(24) L’identificativo univoco

assegnato da MQSeries per

questo messaggio.

222 XML Extender - Amministrazione e programmazione

Page 233: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 69. Tabella della serie di risultati MQRcvAllXML (Continua)

Nome colonna Tipo di dati Descrizione

MSGFORMAT VARCHAR(8) Il formato del messaggio

come definito da MQSeries.

Le stringhe classiche hanno il

formato MQSTR.

Funzione MQReceiveXMLCLOB

Scopo:

MQReceiveXMLCLOB rimuove i messaggi associati al servizio-ricezione dalla coda.

La funzione restituisce i dati XMLVARCHAR dal percorso MQSeries specificato

dalla funzione criterio-servizio che utilizza la qualità del servizio-ricezione.

Sintassi:

�� MQReceiveXMLCLOB ( )

servizio-ricezione

servizio-ricezione

,

criterio-servizio

servizio-ricezione

,

criterio-servizio

id-correl

��

Parametri:

Tabella 70. Parametri MQReceiveXMLCLOB

Parametro Tipo di dati Descrizione

servizio-ricezione VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

da cui ricevere i messaggi.

Quando è specificato

servizio-ricezione, esso si

riferisce al punto di servizio

definito nel file di repository

AMT.XML. Tuttavia, se

servizio-ricezione non è

specificato, verrà utilizzato

DB2.DEFAULT.SERVICE. La

dimensione massima del

servizio-ricezione è 48 byte.

criterio-servizio VARCHAR(48) Una stringa contenente il

criterio di servizio MQSeries

AMI utilizzato per gestire

questo messaggio. Quando

specificato, il

servizio-ricezione deve fare

riferimento a un criterio

definito nel file di repository

AMT.XML. Se criterio-servizio

non è specificato, verrà

utilizzato

DB2.DEFAULT.POLICY

predefinito. La dimensione

massima di criterio-servizio è

48 byte.

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 223

Page 234: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 70. Parametri MQReceiveXMLCLOB (Continua)

Parametro Tipo di dati Descrizione

id-correl VARCHAR(24) Una stringa contenente un

identificativo di correlazione

facoltativo associato a questo

messaggio. L’id-correl viene

spesso specificato in scenari

di richiesta/risposta per

associare le richieste alle

repliche. Se non è specificato,

non verrà mostrato alcun ID

correlazione. La dimensione

massima di id-correl è 24 byte.

Risultati:

Le funzioni MQReceiveXMLCLOB restituiscono db2xml.XMLCLOB se i messaggi

vengono ricevuti correttamente dalla coda. Viene restituito NULL se non è

disponibile alcun messaggio. Se si specifica id-correl, verrà restituito il primo

messaggio con un identificativo di correlazione corrispondente. Tuttavia, se non si

specifica id-correl, verrà restituito il messaggio nell’intestazione della coda.

Funzione MQRcvXMLCLOB

Scopo:

MQRcvXMLCLOB rimuove i messaggi associati al servizio-ricezione dalla coda. La

funzione restituisce i dati XMLVARCHAR dal percorso MQSeries specificato dalla

funzione servizio-ricezione che utilizza la qualità del servizio-ricezione.

Sintassi:

�� MQRcvXMLCLOB ( )

servizio-ricezione

servizio-ricezione

,

servizio-ricezione

servizio-ricezione

,

servizio-ricezione

id-correl

��

Parametri:

Tabella 71. Parametri MQRcvXMLCLOB

Tipo di dati Tipo di dati Descrizione

servizio-ricezione VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

da cui ricevere i messaggi.

Quando è specificato

servizio-ricezione, esso si

riferisce al punto di servizio

definito nel file di repository

AMT.XML. Tuttavia, se

servizio-ricezione non è

specificato, verrà utilizzato

DB2.DEFAULT.SERVICE. La

dimensione massima del

servizio-ricezione è 48 byte.

224 XML Extender - Amministrazione e programmazione

Page 235: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 71. Parametri MQRcvXMLCLOB (Continua)

Tipo di dati Tipo di dati Descrizione

servizio-ricezione VARCHAR(48) Una stringa contenente il

criterio di servizio MQSeries

AMI utilizzato per gestire

questo messaggio. Quando

specificato, il

servizio-ricezione deve fare

riferimento a un criterio

definito nel file di repository

AMT.XML. Se

servizio-ricezione non è

specificato, verrà utilizzato

DB2.DEFAULT.POLICY. La

dimensione massima del

servizio-ricezione è 48 byte.

id-correl VARCHAR(24) Una stringa contenente un

identificativo di correlazione

facoltativo associato a questo

messaggio. L’id-correl viene

spesso specificato in scenari

di richiesta/risposta per

associare le richieste alle

repliche. Se non è specificato,

non verrà mostrato alcun ID

correlazione. La dimensione

massima di id-correl è 24 byte.

Risultati:

Le funzioni MQRcvMLCLOB restituiscono db2xml.XMLCLOB se i messaggi

vengono ricevuti correttamente dalla coda. La dimensione massima di un

messaggio è 1M. Viene restituito NULL se non è disponibile alcun messaggio. Se si

specifica id-correl, verrà restituito il primo messaggio con un identificativo di

correlazione corrispondente. Tuttavia, se non si specifica id-correl, verrà restituito il

messaggio nell’intestazione della coda.

Funzione MQSENDXML

Scopo:

La funzione MQSENDXML invia i dati contenuti in dati-msg al percorso MQSeries

specificato dal servizio di invio utilizzando il criterio di invio. È inoltre possibile

specificare un identificativo di correlazione del messaggio definito dall’utente

tramite id-correl. La funzione restituisce 1 in caso di operazione riuscita.

Sintassi:

�� MQSENDXML ( dati-msg , )

servizio-invio

id-correl

servizio-invio

,

criterio-invio

��

Parametri:

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 225

Page 236: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 72. Parametri MQSendXML

Parametro Tipo di dati Descrizione

dati-msg XMLVARCHAR o XMLCLOB Un’espressione contenente i

dati da inviare tramite

MQSeries.

servizio-invio VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

a cui inviare i messaggi.

Quando è presente

servizio-invio, esso si riferisce

al punto di servizio definito

nel file di repository

AMT.XML.

DB2.DEFAULT.SERVICE

viene utilizzato quando non

si specifica servizio-invio. La

dimensione massima di

servizio-invio è 48 byte.

criterio-invio VARCHAR(48) Una stringa contenente il

criterio di servizio MQSeries

AMI utilizzato per gestire il

messaggio. Quando

specificato, criterio-invio si

riferisce a un criterio definito

nel file di repository

AMT.XML. Se criterio-invio

non è specificato, verrà

utilizzato

DB2.DEFAULT.POLICY. La

dimensione massima di

policyName è 48 byte.

id-correl VARCHAR(24) Una stringa contenente un

identificativo di correlazione

facoltativo associato al

messaggio. L’id-correl viene

spesso specificato in scenari

di richiesta/risposta per

associare le richieste alle

repliche. Se non è specificato,

non verrà mostrato alcun id

correlazione. La dimensione

massima dell’id-correl è 24

byte.

Risultati:

Un messaggio di operazione riuscita produce il valore 1. Un messaggio contenente

dati-msg verrà inviato al percorso specificato dal servizio-invio utilizzando il

criterio definito da criterio-invio.

Funzione MQSENDXMLFILE

Scopo:

La funzione MQSENDXMLFILE invia i dati contenuti nel file-xml al percorso

MQSeries specificato dal servizio di invio utilizzando la qualità del criterio di

226 XML Extender - Amministrazione e programmazione

Page 237: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

servizio. È inoltre possibile specificare un identificativo di correlazione del

messaggio definito dall’utente tramite id-correl. La funzione restituisce ’1’ in caso

di operazione riuscita.

Sintassi:

�� MQSENDXMLFILE ( file_xml , )

servizio-invio

id-correl

servizio-invio

,

criterio-invio

��

Parametri:

Tabella 73. Parametro MQSENDXMLFILE

Parametro Tipo di dati Descrizione

file_xml XMLCLOB Un nome di file XML con

una dimensione massima di

80 byte. Il file contiene i dati

da inviare tramite MQSeries.

servizio-invio VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

a cui inviare i messaggi.

Quando specificato, il

servizio-invio si riferisce a un

criterio definito nel file di

repository AMT.XML. Se

servizio-invio non è

specificato, verrà utilizzato

DB2.DEFAULT.SERVICE. La

dimensione massima di

servizio-invio è 48 byte.

criterio-invio VARCHAR(48) Una stringa contenente il

servizio MQSeries AMI

utilizzato per gestire questo

messaggio. Quando

specificato, criterio-invio si

riferisce a un criterio definito

nel file di repository

AMT.XML. Se criterio-invio

non è specificato, verrà

utilizzato

DB2.DEFAULT.POLICY

predefinito. La dimensione

massima di criterio-invio è 48

byte.

id-correl VARCHAR(24) Una stringa contenente un

identificativo di correlazione

facoltativo associato a questo

messaggio. L’id-correl viene

spesso specificato in scenari

di richiesta/risposta per

associare le richieste alle

repliche. Se non è specificato,

non verrà mostrato alcun id

correlazione. La dimensione

massima di id-correl è 24 byte.

Risultati:

Se la funzione ha esito positivo, il risultato è ’1’. L’effetto collaterale dell’esecuzione

di questa funzione è che un messaggio contenente dati-msg verrà inviato al

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 227

Page 238: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

percorso specificato dal servizio-invio utilizzando il criterio definito da criterio-invio.

Esempi:

Esempio 1: i documenti XML contenuti nel file ″c:\xml\test1.xml″ vengono inviati

al servizio predefinito (DB2.DEFAULT.SERVICE) utilizzando il criterio predefinito

(DB2.DEFAULT.POLICY) senza alcun identificativo di correlazione.

Values MQSENDXMLFILE(’c:\xml\test1.xml’);

Questo esempio restituisce il valore ’1’ in caso di esito positivo

Esempio 2: i documenti XML contenuti nel file c:\xml\test2.xml vengono inviati

al servizio MYSERVICE utilizzando il criterio MYPOLICY senza identificativo di

correlazione.

Values MQSENDXMLFILE(’MYSERVICE’, ’MYPOLICY’, ’c:\xml\test2.xml’);

Questo esempio restituisce il valore ’1’ in caso di esito positivo

Esempio 3: i documenti XML contenuti nel file ″c:\xml\test3.xml″ vengono inviati

al servizio MYSERVICE utilizzando il criterio MYPOLICY con l’identificativo di

correlazione ″Test3″.

Values MQSENDXML(’MYSERVICE’,’MYPOLICY’, ’c:\xml\test3.xml’, ’Test3’);

Questo esempio restituisce il valore ’1’ in caso di esito positivo.

Esempio 4: i documenti XML contenuti nel file ″c:\xml\test4.xml″ vengono inviati

al servizio MYSERVICE utilizzando il criterio predefinito (DB2.DEFAULT.POLICY)

senza alcun identificativo di correlazione.

Values MQSENDXMLFILE(’MYSERVICE’, ’c:\xml\test4.xml’);

Questo esempio restituisce il valore ’1’ in caso di esito positivo.

Funzione MQSendXMLFILECLOB

Scopo:

La funzione MQSendXMLFILECLOB invia i dati contenuti nel file-xml al percorso

MQSeries specificato dal servizio di invio utilizzando la qualità criterio-invio. Il tipo

di dati inviato è XMLCLOB. È inoltre possibile specificare un identificativo di

correlazione del messaggio definito dall’utente tramite id-correl. La funzione

restituisce 1 in caso di operazione riuscita.

Sintassi:

�� MQSendXMLFILECLOB ( file_xml , )

servizio-invio

id-correl

servizio-invio

,

criterio-invio

��

Parametri:

Tabella 74. Parametro MQSENDXMLFILE

Parametro Tipo di dati Descrizione

file_xml XMLCLOB Un nome di file XML con

una dimensione massima di

80 byte. Il file contiene i dati

da inviare tramite MQSeries.

228 XML Extender - Amministrazione e programmazione

Page 239: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 74. Parametro MQSENDXMLFILE (Continua)

Parametro Tipo di dati Descrizione

servizio-invio VARCHAR(48) Una stringa contenente la

destinazione MQSeries logica

a cui inviare i messaggi.

Quando specificato, il

servizio-invio si riferisce a un

criterio definito nel file di

repository AMT.XML. Se

servizio-invio non è

specificato, verrà utilizzato

DB2.DEFAULT.SERVICE. La

dimensione massima di

servizio-invio è 48 byte.

criterio-invio VARCHAR(48) Una stringa contenente il

servizio MQSeries AMI

utilizzato per gestire questo

messaggio. Quando

specificato, criterio-invio si

riferisce a un criterio definito

nel file di repository

AMT.XML. Se criterio-invio

non è specificato, verrà

utilizzato

DB2.DEFAULT.POLICY

predefinito. La dimensione

massima di criterio-invio è 48

byte.

id-correl VARCHAR(24) Una stringa contenente un

identificativo di correlazione

facoltativo associato a questo

messaggio. L’id-correl viene

spesso specificato in scenari

di richiesta/risposta per

associare le richieste alle

repliche. Se non è specificato,

non verrà mostrato alcun id

correlazione. La dimensione

massima di id-correl è 24 byte.

Risultati:

Se la funzione ha esito positivo, il risultato è ’1’. L’effetto collaterale dell’esecuzione

di questa funzione è che un messaggio contenente dati-msg verrà inviato al

percorso specificato dal servizio-invio utilizzando il criterio definito da criterio-invio.

Procedure memorizzate di MQSeries per XML Extender

XML Extender MQSeries procedure memorizzate - Panoramica

Procedure memorizzate di composizione

Utilizzare le procedure memorizzate di composizione, dxxmqGen(),

dxxmqGenCLOB(), dxxmqRetrieve() e dxxmqRetrieveCLOB() per generare

documenti XML utilizzando i dati nelle tabelle del database esistente e per

inviare i documenti XML generati ad una coda di messaggi. Le procedure

memorizzate dxxmqGen() e dxxmqGenCLOB() utilizzano un file DAD

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 229

Page 240: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

come input. Tali procedure non richiedono raccolte XML abilitate. Le

procedure memorizzate dxxmqRetrieve e dxxmqRetrieveCLOB utilizzano

nomi di raccolta come input.

Procedure memorizzate di decomposizione

Le procedure memorizzate di decomposizione dxxmqInsert(),

dxxmqInsertAll(), dxxInsertCLOB(), dxxmqShred(), dxxmqShredCLOB e

dxxmqShredAll() vengono utilizzate per interrompere o rompere

documenti XML in arrivo da una coda di messaggi e per immagazzinare i

dati in tabelle del database nuove o esistenti.

Le procedure memorizzate dxxmqInsert(), dxxmqInsertAll(),

dxxmqInsertAllCLOB() e dxxInsertCLOB() utilizzano un nome di raccolta XML

abilitato come input.

Le procedure memorizzate dxxmqShred(), dxxmqShredAll(), dxxmqShredCLOB e

dxxmqShredAllCLOB utilizzano un file DAD come input. Non richiedono una

raccolta XML abilitata.

La seguente tabella riassume le differenti procedure memorizzate e illustra le

relative funzioni.

Tabella 75. Le procedure memorizzate XML MQSeries®

Funzione Finalità

dxxmqGen Invoca la procedura memorizzata dxxmqGen

per comporre documenti XML, utilizzando

un file DAD come parametro di input. Il tipo

di documento risultante è

XMLVARCHAR(32000).

dxxmqGenCLOB Costruisce un documento XML dai dati

memorizzati nelle tabelle di raccolta XML

specificate nel file DAD e invia il documento

XML ad una coda di messaggi MQ. Il tipo di

documento risultante è XMLCLOB(1M).

dxxmqRetrieve Invoca la procedura memorizzata

dxxmqRetrieve per comporre documenti

XML, utilizzando un nome di raccolta come

parametro di input. Il tipo di documento

risultante è XMLVARCHAR(32000).

dxxmqRetrieveCLOB Invoca la procedura memorizzata

dxxmqRetrieve per comporre documenti

XML, utilizzando un nome di raccolta come

parametro di input. Il tipo di documento

risultante è XMLCLOB(1M).

dxxmqShred Invoca la procedura memorizzata

dxxmqShred per decomporre un documento

XML utilizzando un file DAD come un

parametro di input. Il tipo di documento

risultante è XMLVARCHAR(32000).

dxxmqShredAll Invoca la procedura memorizzata

dxxmqShredAll per decomporre documenti

XML multipli utilizzando un file DAD come

parametro di input. Il tipo di documento

risultante è XMLVARCHAR(32000).

230 XML Extender - Amministrazione e programmazione

Page 241: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 75. Le procedure memorizzate XML MQSeries® (Continua)

Funzione Finalità

dxxmqShredCLOB Decompone un documento XML in arrivo da

una coda di messaggi, in base ad

un’associazione del file DAD e memorizza il

contenuto degli elementi e degli attributi

XML in specifiche tabelle DB2®. Il tipo di

documento risultante è XMLCLOB(1M).

dxxmqShredAllCLOB Decompone un documento XML in arrivo da

una coda di messaggi, in base ad

un’associazione del file DAD e memorizza il

contenuto degli elementi e attributi XML in

tabelle DB2 specifiche. Il tipo di documento

risultante è XMLCLOB(1M).

dxxmqInsert Invoca la procedura memorizzata

dxxmqInsert per decomporre un documento

XML utilizzando un nome di raccolta come

parametro di input. Il tipo di documento

risultante è XMLVARCHAR(32000).

dxxmqInsertAll Invoca la procedura memorizzata

dxxmqInsertAll per decomporre documenti

XML multipli utilizzando un nome di

raccolta come parametro di input. Il tipo di

documento risultante è

XMLVARCHAR(32000).

dxxmqInsertCLOB Interrompe o elimina un documento XML in

arrivo da una coda di messaggi e memorizza

i dati in tabelle del database nuove o

esistenti. Il tipo di documento risultante è

XMLCLOB(1M).

dxxmqInsertAllCLOB Interrompe o elimina tutti i documenti XML

in arrivo da una coda di messaggi e

memorizza i dati in tabelle del database

nuove o esistenti. La procedura memorizzata

dxxmqInsertAllCLOB utilizza un nome di

raccolta, invece che un nome del file DAD,

per determinare come immagazzinare i dati.

Il tipo di documento risultante è

XMLCLOB(1M).

Riferimenti correlati:

v “Procedura memorizzata dxxmqGen()” a pagina 232

v “Procedura memorizzata dxxmqGenCLOB” a pagina 234

v “Procedura memorizzata dxxmqInsert” a pagina 246

v “Procedura memorizzata dxxmqInsertAll” a pagina 250

v “Procedura memorizzata dxxmqInsertAllCLOB” a pagina 251

v “Procedura memorizzata dxxmqInsertCLOB” a pagina 248

v “Procedura memorizzata dxxmqRetrieve” a pagina 236

v “Procedura memorizzata dxxmqRetrieveCLOB” a pagina 239

v “Procedura memorizzata dxxmqShred” a pagina 241

v “Procedura memorizzata dxxmqShredAll” a pagina 242

v “Procedura memorizzata dxxmqShredAllCLOB” a pagina 245

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 231

Page 242: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v “Procedura memorizzata dxxmqShredCLOB” a pagina 244

Procedura memorizzata dxxmqGen()

Scopo:

Crea un documento XML dai dati memorizzati nelle tabelle di raccolta XML

specificate nel file DAD e invia il documento XML a una coda di messaggi MQ. La

procedura memorizzata restituisce una stringa per indicare il proprio stato.

Per supportare la query dinamica, dxxmqGen() richiama un parametro di input,

override. In base all’input overrideType, l’applicazione può sostituire SQL_stmt per

l’associazione SQL o le condizioni in RDB_node per l’associazione RDB_node nel

file DAD. Il parametro di input overrideType viene utilizzato per chiarire il tipo di

override.

Sintassi:

dxxmqGen(varchar(48) serviceName, /*input*/

varchar(48) policyName, /* input */

varchar(80) dadFileName, /* input */

integer overrideType, /*input*/

varchar(varchar_value) override, /*input*/

integer maxRows, /*input*/

integer numRows, /*output*/

char(20) status) /*output*/

Parametri:

Tabella 76. Parametri dxxmqGen()

Parametro Descrizione Parametro

IN/OUT

serviceName Una stringa contenente la destinazione

MQSeries logica a cui inviare i messaggi.

Quando è presente serviceName, esso si

riferisce al punto di servizio definito nel

file di repository AMT.XML.

DB2.DEFAULT.SERIVCE viene utilizzato

quando non si specifica serviceName. La

dimensione massima di serviceName è 48

byte.

IN

policyName Una stringa contenente il criterio di

servizio MQSeries AMI utilizzato per

gestire i messaggi. Quando specificato,

policyName si riferisce a un criterio definito

nel file di repository AMT.XML. Se

policyName non è specificato, verrà

utilizzato DB2.DEFAULT.POLICY. La

dimensione massima di policyName è 48

byte.

IN

dadFileName Il nome del file DAD. IN

232 XML Extender - Amministrazione e programmazione

Page 243: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 76. Parametri dxxmqGen() (Continua)

Parametro Descrizione Parametro

IN/OUT

overrideType Un indicatore relativo al seguente tipo di

parametro override:

v NO_OVERRIDE: Nessuna sostituzione.

v SQL_OVERRIDE: Sostituzione da parte

di SQL_stmt.

v XML_OVERRIDE: Sostituzione da

parte di una condizione basata sul

percorso.

IN

override Sostituisce la condizione nel file DAD. Il

valore di input si basa su overrideType.

v NO_OVERRIDE: Una stringa NULL.

v SQL_OVERRIDE: Un’istruzione SQL

valida. Utilizzando overrideType, è

necessario usare l’associazione SQL

utilizzata nel file DAD. L’istruzione SQL

di input sostituisce SQL_stmt nel file

DAD.

v XML_OVERRIDE: Una stringa che

contiene una o più espressioni tra

virgolette separate dalla parola ″AND″.

Utilizzando overrideType, è necessario

usare l’associazione RDB_node nel file

DAD.

IN

maxRows Il numero massimo di messaggi generati

nella relativa coda.

IN

numRows Il numero effettivo di righe generate nella

coda messaggi.

OUT

stato Il testo e i codici restituiti che specificano

se la procedura è stata eseguita

correttamente o meno, i codici di errore

generati e il numero di documenti XML

ricevuti o inviati alla coda messaggi.

OUT

Esempi:

Il seguente frammento di esempio genera un documento XML e lo invia alla coda.

Si presuppone che un servizio MQ/AMI, myService ed è stato definito un criterio,

myPolicy, nel file di repository. Questo file memorizza le definizioni di repository in

formato XML.

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char serviceName[48]; /* nome del servizio MQ/AMI */

char policyName[48]; /* nome del criterio MQ/AMI */

char dadFileName[80]; /* nome del file DAD */

char override[2]; /* sostituzione, impostata su NULL*/

short overrideType; /* definito in dxx.h */

short max_row; /* numero massimo di righe */

short num_row; /* numero effettivo di righe */

char status[20] /* messaggio o codice di stato */

short ovtype_ind;

short ov_ind;

short maxrow_ind;

short numrow_ind;

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 233

Page 244: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

short dadFileName_ind;

short serviceName_ind;

short policyName_ind;

short status_ind;

EXEC SQL END DECLARE SECTION;

strcpy(dadFileName,"c:\dxx\dad\litem3.dad");

strcpy(serviceName, "myService");

strcpy(policyName, "myPolicy");

override[0] = ’\0’;

overrideType = NO_OVERRIDE;

max_row = 500;

num_row = 0;

status[0] = ’\0’;

dadFileName_ind = 0;

serviceName_ind = 0;

policyName_ind = 0;

maxrow_ind = 0;

numrow_ind = -1;

ovtype_ind=0;

ov_ind=-1;

status_ind = -1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxmqGen(:serviceName:serviceName_ind,

:policyName:policyName_ind,

:dadFileName:dadFileName_ind,

:overrideType:ovtype_ind,

:override:ov_ind,

:max_row:maxrow_ind,

:num_row:numrow_ind,

:status:status_ind);

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Attività correlate:

v “Richiamo delle procedure memorizzate XML Extender” a pagina 183

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxmqGenCLOB

Scopo:

Crea un documento XML dai dati memorizzati nelle tabelle di raccolta XML

specificate nel file DAD e invia il documento XML a una coda di messaggi MQ. Il

tipo di documento è XMLCLOB. La procedura memorizzata restituisce una stringa

per indicare il proprio stato. Tale procedura memorizzata non è supportata per ESE

(Enterprise Server Edition).

Per supportare la query dinamica, dxxmqGenCLOB richiama un parametro di

input, override. In base all’input overrideType, l’applicazione può sostituire SQL_stmt

per l’associazione SQL o le condizioni in RDB_node per l’associazione RDB_node

nel file DAD. Il parametro di input overrideType viene utilizzato per chiarire il tipo

di override.

Sintassi:

234 XML Extender - Amministrazione e programmazione

Page 245: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

dxxmqGenCLOB(varchar(48) serviceName, /*input*/

varchar(48) policyName, /* input */

varchar(80) dadFileName, /* input */

integer overrideType, /*input*/

varchar(varchar_value) override, /*input*/

integer maxRows, /*input*/

integer numRows, /*output*/

char(20) status) /*output*/

Parametri:

Tabella 77. Parametri dxxmqGenCLOB

Parametro Descrizione Parametro

IN/OUT

serviceName Una stringa contenente la destinazione

MQSeries logica a cui inviare i messaggi.

Quando è presente serviceName, esso si

riferisce a una voce di servizio nella

tabella DB2MQ.MQService.

DB2.DEFAULT.SERIVCE viene utilizzato

quando non si specifica serviceName. La

dimensione massima di serviceName è 48

byte.

IN

policyName Una stringa contenente il criterio di

servizio MQSeries utilizzato per gestire i

messaggi. Quando specificato, policyName

si riferisce a un criterio definito nella

tabella DB2MQ.MQPolicy. Se policyName

non è specificato, verrà utilizzato

DB2.DEFAULT.POLICY. La dimensione

massima di policyName è 48 byte.

IN

dadFileName Il nome del file DAD. IN

overrideType Un indicatore relativo al seguente tipo di

parametro override:

v NO_OVERRIDE: Nessuna sostituzione.

v SQL_OVERRIDE: Sostituzione da parte

di SQL_stmt.

v XML_OVERRIDE: Sostituzione da

parte di una condizione basata sul

percorso.

IN

override Sostituisce la condizione nel file DAD. Il

valore di input si basa su overrideType.

v NO_OVERRIDE: Una stringa NULL.

v SQL_OVERRIDE: Un’istruzione SQL

valida. Utilizzando overrideType, è

necessario usare l’associazione SQL

utilizzata nel file DAD. L’istruzione SQL

di input sostituisce SQL_stmt nel file

DAD.

v XML_OVERRIDE: Una stringa che

contiene una o più espressioni tra

virgolette separate dalla parola ″AND″.

Utilizzando overrideType, è necessario

usare l’associazione RDB_node nel file

DAD.

IN

maxRows Il numero massimo di messaggi generati

nella relativa coda.

IN

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 235

Page 246: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 77. Parametri dxxmqGenCLOB (Continua)

Parametro Descrizione Parametro

IN/OUT

numRows Il numero effettivo di righe generate nella

coda messaggi.

OUT

stato Il testo e i codici restituiti che specificano

se la procedura è stata eseguita

correttamente o meno, i codici di errore

generati e il numero di documenti XML

ricevuti o inviati alla coda messaggi.

OUT

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxmqRetrieve

Scopo:

La procedura memorizzata dxxmqRetrieve() è un mezzo per richiamare i

documenti XML decomposti. Come input, dxxmqRetrieve() utilizza un buffer

contenente il nome raccolta XML abilitato, il servizio MQ e i nomi criterio. Invia

quindi il documento XML composto a una coda MQ; restituisce il numero di righe

inviate alla coda e un messaggio sullo stato. La procedura memorizzata

dxxmqRetrieve consente l’utilizzo dello stesso file DAD sia per la composizione

che per la decomposizione.

Per supportare la query dinamica, dxxmqRetrieve() richiama un parametro di

input, override. In base all’input overrideType, l’applicazione può sostituire SQL_stmt

per l’associazione SQL o le condizioni in RDB_node per l’associazione RDB_node

nel file DAD. Il parametro di input overrideType viene utilizzato per chiarire il tipo

di override.

I requisiti per l’utilizzo del file DAD per dxxRetrieve() sono gli stessi utilizzati per

dxxmqGen(). L’unica differenza è che DAD non è un parametro di input per

dxxmqRetrieve(); il parametro richiesto è il nome della raccolta XML abilitata.

Sintassi:

dxxmqRetrieve(varchar(48) serviceName, /*input*/

varchar(48) policyName, /* input */

varchar(80) collectionName, /* input */

integer overrideType, /*input*/

varchar(varchar_value) override, /*input*/

integer maxrows, /*input*/

integer numrows, /*output*/

char(20) status) /*output*/

236 XML Extender - Amministrazione e programmazione

Page 247: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Parametri:

Tabella 78. Parametri dxxmqRetrieve()

Parametro Descrizione Parametro

IN/OUT

serviceName Una stringa contenente la destinazione

MQSeries logica a cui inviare i messaggi.

Quando è presente serviceName, esso si

riferisce al punto di servizio definito nel

file di repository AMT.XML.

DB2.DEFAULT.SERVICE viene utilizzato

quando non si specifica serviceName. La

dimensione massima di serviceName è 48

byte.

IN

policyName Una stringa contenente il criterio di

servizio MQSeries AMI utilizzato per

gestire i messaggi. Quando specificato,

policyName si riferisce a un criterio

definito nel file di repository AMT.XML.

Se policyName non è specificato, verrà

utilizzato DB2.DEFAULT.POLICY. La

dimensione massima di policyName è 48

byte.

IN

collectionName Il nome della raccolta abilitata. IN

overrideType Un indicatore relativo al seguente tipo di

parametro override:

v NO_OVERRIDE: Nessuna

sostituzione.

v SQL_OVERRIDE: Sostituzione da

parte di SQL_stmt.

v XML_OVERRIDE: Sostituzione da

parte di una condizione basata sul

percorso.

IN

override Sostituisce la condizione nel file DAD. Il

valore di input si basa su overrideType.

v NO_OVERRIDE: Una stringa NULL.

v SQL_OVERRIDE: Un’istruzione SQL

valida. Utilizzando overrideType, è

necessario usare l’associazione SQL

utilizzata nel file DAD. L’istruzione

SQL di input sostituisce SQL_stmt nel

file DAD.

v XML_OVERRIDE: Una stringa che

contiene una o più espressioni tra

virgolette separate dalla parola ″AND″.

La lunghezza massima è 1024 byte. La

stringa overrideType richiede l’utilizzo

dell’associazione RDB_node nel file

DAD.

IN

maxRows Il numero massimo di righe nella tabella

dei risultati.

IN

numRows Il numero effettivo di righe generate nella

tabella dei risultati.

OUT

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 237

Page 248: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 78. Parametri dxxmqRetrieve() (Continua)

Parametro Descrizione Parametro

IN/OUT

stato Il testo e i codici restituiti che specificano

se la procedura è stata eseguita

correttamente o meno, i codici di errore

generati e il numero di documenti XML

ricevuti o inviati alla coda messaggi.

OUT

Esempi:

Il seguente frammento è un esempio di chiamata a dxxmqRetrieve().

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char serviceName[48]; /* nome del servizio MQ/AMI */

char policyName[48]; /* nome del criterio MQ/AMI */

char collection[32]; /* nome della raccolta XML */

char override[2]; /* sostituzione, impostata su NULL*/

short overrideType; /* definito in dxx.h */

short max_row; /* numero massimo di righe */

short num_row; /* numero effettivo di righe */

char status[20]; /* messaggio o codice di stato */

short ovtype_ind;

short ov_ind;

short maxrow_ind;

short numrow_ind;

short collection_ind;

short serviceName_ind;

short policyName_ind;

short status_ind;

EXEC SQL END DECLARE SECTION;

/* inizializza la variabile host e gli indicatori */

strcpy(collection,"sales_ord");

strcpy(serviceName, "myService");

strcpy(policyName, "myPolicy");

override[0] = ’\0’;

overrideType = NO_OVERRIDE;

max_row = 500;

num_row = 0;

status[0] = ’\0’;

serviceName_ind = 0;

policyName_ind = 0;

collection_ind = 0;

maxrow_ind = 0;

numrow_ind = -1;

ovtype_ind=0;

ov_ind=-1;

status_ind = -1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxmqRetrieve(:serviceName:serviceName_ind,

:policyName:policyName_ind,

:collection:collection_ind,

:overrideType:ovtype_ind,

:override:ov_ind,

:max_row:maxrow_ind,

:num_row:numrow_ind,

:status:status_ind);

238 XML Extender - Amministrazione e programmazione

Page 249: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxmqRetrieveCLOB

Scopo:

La procedura memorizzata dxxmqRetrieveCLOB è un mezzo per richiamare i

documenti XML decomposti. Come input, dxxmqRetrieveCLOB utilizza un buffer

contenente il nome raccolta XML abilitato, il servizio MQ/AMI e i nomi criterio.

Invia il documento XML composto a una coda MQ e restituisce il numero di righe

inviate alla coda e un messaggio sullo stato.La procedura memorizzata

dxxmqRetrieveCLOB consente l’utilizzo dello stesso file DAD sia per la

composizione che per la decomposizione. Tale procedura memorizzata non è

supportata per ESE (Enterprise Server Edition).

Per supportare la query dinamica, dxxmqRetrieveCLOB richiama un parametro di

input, override. In base all’input overrideType, l’applicazione può sostituire SQL_stmt

per l’associazione SQL o le condizioni in RDB_node per l’associazione RDB_node

nel file DAD. Il parametro di input overrideType viene utilizzato per chiarire il tipo

di override.

I requisiti per l’utilizzo del file DAD per dxxRetrieveXMLClob sono gli stessi

utilizzati per dxxmqGenCLOB. L’unica differenza è che DAD non è un parametro

di input per dxxmqRetrieveCLOB; il parametro richiesto è il nome della raccolta

XML abilitata.

Sintassi:

dxxmqRetrieveCLOB(varchar(48) serviceName, /*input*/

varchar(48) policyName, /* input */

varchar(80) collectionName, /* input */

integer overrideType, /*input*/

varchar(varchar_value) override, /*input*/

integer maxrows, /*input*/

integer numrows, /*output*/

char(20) status) /*output*/

Parametri:

Tabella 79. Parametri dxxmqRetrieveCLOB

Parametro Descrizione Parametro

IN/OUT

serviceName Una stringa contenente la destinazione

MQSeries logica a cui inviare i messaggi.

Quando è presente serviceName, esso si

riferisce al punto di servizio definito nel

file di repository AMT.XML.

DB2.DEFAULT.SERVICE viene utilizzato

quando non si specifica serviceName. La

dimensione massima di serviceName è 48

byte.

IN

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 239

Page 250: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 79. Parametri dxxmqRetrieveCLOB (Continua)

Parametro Descrizione Parametro

IN/OUT

policyName Una stringa contenente il criterio di

servizio MQSeries AMI utilizzato per

gestire i messaggi. Quando specificato,

policyName si riferisce a un criterio

definito nel file di repository AMT.XML.

Se policyName non è specificato, verrà

utilizzato DB2.DEFAULT.POLICY. La

dimensione massima di policyName è 48

byte.

IN

collectionName Il nome della raccolta abilitata. IN

overrideType Un indicatore relativo al seguente tipo di

parametro override:

v NO_OVERRIDE: Nessuna

sostituzione.

v SQL_OVERRIDE: Sostituzione da

parte di SQL_stmt.

v XML_OVERRIDE: Sostituzione da

parte di una condizione basata sul

percorso.

IN

override Sostituisce la condizione nel file DAD. Il

valore di input si basa su overrideType.

v NO_OVERRIDE: Una stringa NULL.

v SQL_OVERRIDE: Un’istruzione SQL

valida. Utilizzando overrideType, è

necessario usare l’associazione SQL

utilizzata nel file DAD. L’istruzione

SQL di input sostituisce SQL_stmt nel

file DAD.

v XML_OVERRIDE: Una stringa che

contiene una o più espressioni tra

virgolette separate dalla parola ″AND″.

La dimensione massima è 1024 byte. La

stringa overrideType richiede l’utilizzo

dell’associazione RDB_node nel file

DAD.

IN

maxRows Il numero massimo di righe nella tabella

dei risultati.

IN

numRows Il numero effettivo di righe generate nella

tabella dei risultati.

OUT

stato Il testo e i codici restituiti che specificano

se la procedura è stata eseguita

correttamente o meno, i codici di errore

generati e il numero di documenti XML

ricevuti o inviati alla coda messaggi.

OUT

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

240 XML Extender - Amministrazione e programmazione

Page 251: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Procedura memorizzata dxxmqShred

Scopo:

Decompone un documento XML in entrata da una coda messaggi, in base a

un’associazione di file DAD e memorizza il contenuto degli attributi ed elementi

XML nelle tabelle DB2 specificate.

Per il corretto funzionamento di dxxmqShred(), tutte le tabelle specificate nel file

DAD devono essere presenti e tutte le colonne e i relativi tipi di dati specificati in

DAD devono essere coerenti con le tabelle esistenti. La procedura memorizzata

richiede che le colonne specificate nella condizione di unione di DAD,

corrispondano alle relazioni di chiavi primaria-esterna nelle tabelle esistenti. Le

colonne della condizione di unione specificate in RDB_node dell’element_node

devono essere presenti nelle tabelle.

Sintassi:

dxxmqShred(varchar(48) serviceName, /* input */

varchar(48) policyName, /* input */

varchar(80) dadFileName, /* input */

varchar(10) status) /* output */

Parametri:

Tabella 80. Parametri dxxmqShred()

Parametro Descrizione Parametro

IN/OUT

serviceName Una stringa contenente la destinazione

MQSeries logica a cui inviare i messaggi.

Quando è presente serviceName, esso si

riferisce al punto di servizio definito nel

file di repository AMT.XML.

DB2.DEFAULT.SERVICE viene utilizzato

quando non si specifica serviceName. La

dimensione massima di serviceName è 48

byte.

IN

policyName Una stringa contenente il criterio di

servizio MQSeries AMI utilizzato per

gestire i messaggi. Quando specificato,

policyName si riferisce a un criterio

definito nel file di repository AMT.XML.

Se policyName non è specificato, verrà

utilizzato DB2.DEFAULT.POLICY. La

dimensione massima di policyName è 48

byte.

IN

dadFileName Il nome del file DAD. La dimensione

massima è 80 byte.

IN

stato Il testo e i codici restituiti che specificano

se la procedura è stata eseguita

correttamente o meno, i codici di errore

generati e il numero di documenti XML

ricevuti o inviati alla coda messaggi.

OUT

Esempi:

Il seguente frammento è un esempio di chiamata a dxxmqShred().

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 241

Page 252: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char serviceName[48]; /* nome del servizio MQ/AMI */

char policyName[48]; /* nome del criterio MQ/AMI */

char dadFileName[80]; /* nome del file DAD */

char status[20]; /* messaggio o codice di stato */

short serviceName_ind;

short policyName_ind;

short dadFileName_ind;

short status_ind;

EXEC SQL END DECLARE SECTION;

/* inizializza la variabile host e gli indicatori */

strcpy(dadFileName,"e:/dxx/samples/dad/getstart_xcollection.dad");

strcpy(serviceName, "myService");

strcpy(policyName, "myPolicy");

status[0]=’\0’;

serviceName_ind=0;

policyName_ind=0;

dadFileName_ind=0;

status_ind=-1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxmqShred(:serviceName:serviceName_ind,

:policyName:policyName_ind,

:dadFileName:dadFileName_ind,

:status:status_ind);

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxmqShredAll

Scopo:

Decompone tutti i documenti XML file entrata da una coda messaggi in base a

un’associazione di file DAD. Il contenuto degli attributi ed elementi XML è

memorizzato in tabelle DB2 specifiche.

Per il corretto funzionamento di dxxmqShredAll(), tutte le tabelle specificate nel

file DAD devono essere presenti e tutte le colonne e i relativi tipi di dati specificati

in DAD devono essere coerenti con le tabelle esistenti. La procedura memorizzata

richiede che le colonne specificate nella condizione di unione di DAD,

corrispondano alle relazioni di chiavi primaria-esterna nelle tabelle esistenti. Le

colonne della condizione di unione specificate in RDB_node dell’element_node

devono essere presenti nelle tabelle.

Sintassi:

dxxmqShredAll(varchar(48) serviceName, /* input */

varchar(48) policyName, /* input */

varchar(80) dadFileName, /* input */

varchar(20) status) /* output */

242 XML Extender - Amministrazione e programmazione

Page 253: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Parametri:

Tabella 81. Parametri dxxmqShredAll()

Parametro Descrizione Parametro

IN/OUT

serviceName Una stringa contenente la destinazione

MQSeries logica a cui inviare i messaggi.

Quando è presente serviceName, esso si

riferisce al punto di servizio definito nel

file di repository AMT.XML.

DB2.DEFAULT.SERVICE viene utilizzato

quando non si specifica serviceName. La

dimensione massima di serviceName è 48

byte.

IN

policyName Una stringa contenente il criterio di

servizio MQSeries AMI utilizzato per

gestire i messaggi. Quando specificato,

policyName si riferisce a un criterio

definito nel file di repository AMT.XML.

Se policyName non è specificato, verrà

utilizzato DB2.DEFAULT.POLICY. La

dimensione massima di policyName è 48

byte.

IN

dadFileName Il nome del file DAD. La dimensione

massima è 80 byte.

IN

stato Il testo e i codici restituiti che specificano

se la procedura è stata eseguita

correttamente o meno, i codici di errore

generati e il numero di documenti XML

ricevuti o inviati alla coda messaggi.

OUT

Esempi:

Il seguente frammento è un esempio di chiamata a dxxmqShredAll().

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char serviceName[48]; /* nome del servizio MQ/AMI */

char policyName[48]; /* nome del criterio MQ/AMI */

char dadFileName[80]; /* nome del file DAD */

char status[20]; /* messaggio o codice di stato */

short serviceName_ind;

short policyName_ind;

short dadFileName_ind;

short status_ind;

EXEC SQL END DECLARE SECTION;

/* inizializza la variabile host e gli indicatori */

strcpy(dadFileName,"e:/dxx/samples/dad/getstart_xcollection.dad");

strcpy(serviceName, "myService");

strcpy(policyName, "myPolicy");

status[0]=\0;

serviceName_ind=0;

policyName_ind=0;

dadFileName_ind=0;

status_ind=-1;

/* Richiama la procedura memorizzata */

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 243

Page 254: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

EXEC SQL CALL db2xml.dxxmqShredAll(:serviceName:serviceName_ind,

:policyName:policyName_ind,

:dadFileName:dadFileName_ind,

:status:status_ind);

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxmqShredCLOB

Scopo:

Decompone un documento XML in entrata da una coda messaggi, in base a

un’associazione di file DAD e memorizza il contenuto degli attributi ed elementi

XML nelle tabelle DB2 specificate. Il tipo di documento in entrata è XMLCLOB.

Per dxxmqShredCLOB, tutte le tabelle specificate nel file DAD devono essere

presenti e tutte le colonne e i tipi di dati specificati in DAD devono essere coerenti

con le tabelle esistenti. Questa procedura memorizzata richiede che le colonne

specificate nella condizione di unione di DAD, corrispondano alle relazioni di

chiavi primaria-esterna nelle tabelle esistenti. Le colonne della condizione di

unione specificate in RDB_node dell’element_node devono essere presenti nelle

tabelle.

Sintassi:

dxxmqShredCLOB(varchar(48) serviceName, /* input */

varchar(48) policyName, /* input */

varchar(80) dadFileName, /* input */

varchar(10) status) /* output */

Parametri:

Tabella 82. Parametri dxxmqShredCLOB

Parametro Descrizione Parametro

IN/OUT

serviceName Una stringa contenente la destinazione

MQSeries logica a cui inviare i messaggi.

Quando è presente serviceName, esso si

riferisce al punto di servizio definito nel

file di repository AMT.XML.

DB2.DEFAULT.SERVICE viene utilizzato

quando non si specifica serviceName. La

dimensione massima di serviceName è 48

byte.

IN

244 XML Extender - Amministrazione e programmazione

Page 255: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 82. Parametri dxxmqShredCLOB (Continua)

Parametro Descrizione Parametro

IN/OUT

policyName Una stringa contenente il criterio di

servizio MQSeries AMI utilizzato per

gestire i messaggi. Quando specificato,

policyName si riferisce a un criterio

definito nel file di repository AMT.XML.

Se policyName non è specificato, verrà

utilizzato DB2.DEFAULT.POLICY. La

dimensione massima di policyName è 48

byte.

IN

dadFileName Il nome del file DAD. La dimensione

massima è 80 byte.

IN

stato Il testo e i codici restituiti che specificano

se la procedura è stata eseguita

correttamente o meno, i codici di errore

generati e il numero di documenti XML

ricevuti o inviati alla coda messaggi.

OUT

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxmqShredAllCLOB

Scopo:

Decompone un documento XML in entrata da una coda messaggi, in base a

un’associazione di file DAD e memorizza il contenuto degli attributi ed elementi

XML nelle tabelle database DB2 specificate.

Per dxxmqShredAllCLOB, tutte le tabelle specificate nel file DAD devono essere

presenti e tutte le colonne e i tipi di dati specificati in DAD devono essere coerenti

con le tabelle esistenti. Questa procedura memorizzata richiede che le colonne

specificate nella condizione di unione di DAD, corrispondano alle relazioni di

chiavi primaria-esterna nelle tabelle esistenti. Le colonne della condizione di

unione specificate in RDB_node dell’element_node devono essere presenti nelle

tabelle.

Sintassi:

dxxmqShredCLOB(varchar(48) serviceName, /* input */

varchar(48) policyName, /* input */

varchar(80) dadFileName, /* input */

varchar(10) status) /* output */

Parametri:

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 245

Page 256: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 83. Parametri dxxmqShredAllCLOB

Parametro Descrizione Parametro

IN/OUT

serviceName Una stringa contenente la destinazione

MQSeries logica a cui inviare i messaggi.

Quando è presente serviceName, esso si

riferisce al punto di servizio definito nel

file di repository AMT.XML.

DB2.DEFAULT.SERVICE viene utilizzato

quando non si specifica serviceName. La

dimensione massima di serviceName è 48

byte.

IN

policyName Una stringa contenente il criterio di

servizio MQSeries AMI utilizzato per

gestire i messaggi. Quando specificato,

policyName si riferisce a un criterio

definito nel file di repository AMT.XML.

Se policyName non è specificato, verrà

utilizzato DB2.DEFAULT.POLICY. La

dimensione massima di policyName è 48

byte.

IN

dadFileName Il nome del file DAD. La dimensione

massima è 80 byte.

IN

stato Il testo e i codici restituiti che specificano

se la procedura è stata eseguita

correttamente o meno, i codici di errore

generati e il numero di documenti XML

ricevuti o inviati alla coda messaggi.

OUT

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxmqInsert

Scopo:

Interrompe o suddivide un documento XML in entrata da una coda messaggi e

memorizza i dati nelle tabelle database nuove o esistenti. dxxmqInsert utilizza un

nome di raccolta anziché un nome file DAD, per determinare come memorizzare i

dati.

Sintassi:

dxxmqInsert(varchar(48) serviceName, /* input */

varchar(48) policyName, /* input */

varchar(80) collectionName, /* input */

varchar(20) status) /* output */

246 XML Extender - Amministrazione e programmazione

Page 257: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Parametri:

Tabella 84. Parametri dxxmqInsert()

Parametro Descrizione Parametro IN/OUT

serviceName Una stringa contenente la

destinazione MQSeries logica a cui

inviare i messaggi. Quando è

presente serviceName, esso si

riferisce al punto di servizio

definito nel file di repository

AMT.XML.

DB2.DEFAULT.SERVICE viene

utilizzato quando non si specifica

serviceName. La dimensione

massima di serviceName è 48 byte.

IN

policyName Una stringa contenente il criterio di

servizio MQSeries AMI utilizzato

per gestire i messaggi. Quando

specificato, policyName si riferisce a

un criterio definito nel file di

repository AMT.XML. Se policyName

non è specificato, verrà utilizzato

DB2.DEFAULT.POLICY. La

dimensione massima di policyName

è 48 byte.

IN

collectionName Il nome della raccolta XML

abilitata. La dimensione massima è

80 byte.

IN

stato Il testo e i codici restituiti che

specificano se la procedura è stata

eseguita correttamente o meno, i

codici di errore generati e il numero

di documenti XML ricevuti o inviati

alla coda messaggi.

OUT

Esempi:

Nel seguente esempio di frammentazione, la chiamata dxxmqInsert richiama il

documento XML di input order1.xml da una coda messaggi definita da

serviceName, deframmenta il documento e inserisce i dati nelle tabelle di raccolta

SALES_ORDER, secondo l’associazione specificata nel file DAD con cui è stata

abilitata.

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char serviceName[48];

char policyName[48];

char collection[80]; /* nome di una raccolta XML */

char status[10];

short serviceName_ind;

short policyName_ind;

short collection_ind;

short status_ind;

EXEC SQL END DECLARE SECTION;

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 247

Page 258: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

/* inizializza la variabile host e gli indicatori */

strcpy(serviceName, "myService");

strcpy(policyName, "myPolicy");

strcpy(collection,"sales_ord")

status[0]=\0;

serviceName_ind = 0;

policyName_ind = 0;

collection_ind = 0;

status_ind = -1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxmqInsert(:serviceName:serviceName_ind,

:policyName:policyName_ind,

:collection:collection_ind,

:status:status_ind);

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxmqInsertCLOB

Scopo:

Interrompe o suddivide un documento XML in entrata da una coda messaggi e

memorizza i dati nelle tabelle database nuove o esistenti. dxxmqInsertAllCLOB

utilizza un nome di raccolta anziché un nome file DAD, per determinare come

memorizzare i dati. Il tipo di documento in entrata è XMLCLOB.

Sintassi:

dxxmqInsertCLOB(varchar(48) serviceName, /* input */

varchar(48) policyName, /* input */

varchar(80) collectionName, /* input */

varchar(20) status) /* output */

Parametri:

Tabella 85. Parametri dxxmqInsertCLOB()

Parametro Descrizione Parametro IN/OUT

serviceName Una stringa contenente la

destinazione MQSeries logica a cui

inviare i messaggi. Quando è

presente serviceName, esso si

riferisce al punto di servizio

definito nel file di repository

AMT.XML.

DB2.DEFAULT.SERVICE viene

utilizzato quando non si specifica

serviceName. La dimensione

massima di serviceName è 48 byte.

IN

248 XML Extender - Amministrazione e programmazione

Page 259: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 85. Parametri dxxmqInsertCLOB() (Continua)

Parametro Descrizione Parametro IN/OUT

policyName Una stringa contenente il criterio di

servizio MQSeries AMI utilizzato

per gestire i messaggi. Quando

specificato, policyName si riferisce a

un criterio definito nel file di

repository AMT.XML. Se policyName

non è specificato, verrà utilizzato

DB2.DEFAULT.POLICY. La

dimensione massima di policyName

è 48 byte.

IN

collectionName Il nome della raccolta XML

abilitata.

IN

stato Il testo e i codici restituiti che

specificano se la procedura è stata

eseguita correttamente o meno, i

codici di errore generati e il numero

di documenti XML ricevuti o inviati

alla coda messaggi.

OUT

Esempi:

Nel seguente esempio di frammentazione, la chiamata dxxmqInsertCLOB richiama

il documento XML di input order1.xml da una coda messaggi definita da

serviceName, deframmenta il documento e inserisce i dati nelle tabelle di raccolta

SALES_ORDER, secondo l’associazione specificata nel file DAD con cui è stata

abilitata.

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char serviceName[48];

char policyName[48];

char collection[48]; /* nome di una raccolta XML */

char status[10];

short serviceName_ind;

short policyName_ind;

short collection_ind;

short status_ind;

EXEC SQL END DECLARE SECTION;

/* inizializza la variabile host e gli indicatori */

strcpy(serviceName, "myService");

strcpy(policyName, "myPolicy");

strcpy(collection,"sales_ord")

status[0] = \0;

serviceName_ind = 0;

policyName_ind = 0;

collection_ind = 0;

status_ind = -1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxmqInsertCLOB(:serviceName:serviceName_ind;

:policyName:policyName_ind,

:collection:collection_ind,

:status:status_ind);

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 249

Page 260: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxmqInsertAll

Scopo:

Interrompe o suddivide tutti i documenti XML in entrata da una coda messaggi e

memorizza i dati nelle tabelle database nuove o esistenti. dxxmqInsertAll utilizza

un nome di raccolta anziché un nome file DAD, per determinare come

memorizzare i dati.

Sintassi:

dxxmqInsertAll(varchar(48) serviceName, /* input */

varchar(48) policyName, /* input */

varchar(48) collectionName, /* input */

varchar(20) status) /* output */

Parametri:

Tabella 86. Parametri dxxmqInsertAll()

Parametro Descrizione Parametro IN/OUT

serviceName Una stringa contenente la

destinazione MQSeries logica a cui

inviare i messaggi. Quando è

presente serviceName, esso si

riferisce al punto di servizio

definito nel file di repository

AMT.XML.

DB2.DEFAULT.SERVICE viene

utilizzato quando non si specifica

serviceName. La dimensione

massima di serviceName è 48 byte.

IN

policyName Una stringa contenente il criterio di

servizio MQSeries AMI utilizzato

per gestire i messaggi. Quando

specificato, policyName si riferisce a

un criterio definito nel file di

repository AMT.XML. Se policyName

non è specificato, verrà utilizzato

DB2.DEFAULT.POLICY. La

dimensione massima di policyName

è 48 byte.

IN

collectionName Il nome della raccolta XML

abilitata. La dimensione massima è

80 byte.

IN

stato Il testo e i codici restituiti che

specificano se la procedura è stata

eseguita correttamente o meno, i

codici di errore generati e il numero

di documenti XML ricevuti o inviati

alla coda messaggi.

OUT

Esempi:

250 XML Extender - Amministrazione e programmazione

Page 261: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Nel seguente esempio di frammentazione, la chiamata dxxmqInsertAll richiama

tutti i documenti XML di input da una coda messaggi definita da serviceName,

deframmenta i documenti e inserisce i dati nelle tabelle di raccolta SALES_ORDER,

secondo l’associazione specificata nel file DAD con cui è stata abilitata.

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char serviceName[48];

char policyName[48];

char collection[80]; /* nome di una raccolta XML */

char status[10];

short serviceName_ind;

short policyName_ind;

short collection_ind;

short status_ind;

EXEC SQL END DECLARE SECTION;

/* inizializza la variabile host e gli indicatori */

strcpy(serviceName, "myService");

strcpy(policyName, "myPolicy");

strcpy(collection,"sales_ord");

status[0]=’\0’;

serviceName_ind = 0;

policyName_ind = 0;

collection_ind = 0;

status_ind = -1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxmqInsertAll(:serviceName:serviceName_ind,

:policyName:policyName_ind,

:collection:collection_ind,

:status:status_ind);

Argomenti correlati:

v “Procedure memorizzate XML Extender e funzioni per MQSeries - Panoramica”

a pagina 207

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Procedura memorizzata dxxmqInsertAllCLOB

Scopo:

Interrompe o suddivide tutti i documenti XML in entrata da una coda messaggi e

memorizza i dati nelle tabelle database nuove o esistenti. La procedura

memorizzata dxxmqInsertAllCLOB utilizza un nome di raccolta anziché un nome

file DAD, per determinare come memorizzare i dati.

Sintassi:

dxxmqInsertAllCLOB(varchar(48) serviceName, /* input */

varchar(48) policyName, /* input */

varchar(48) collectionName, /* input */

varchar(20) status) /* output */

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 251

Page 262: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Parametri:

Tabella 87. Parametri dxxmqInsertAllCLOB()

Parametro Descrizione Parametro IN/OUT

serviceName Una stringa contenente la

destinazione MQSeries logica a cui

inviare i messaggi. Quando è

presente serviceName, esso si

riferisce al punto di servizio

definito nel file di repository

AMT.XML.

DB2.DEFAULT.SERVICE viene

utilizzato quando non si specifica

serviceName. La dimensione

massima di serviceName è 48 byte.

IN

policyName Una stringa contenente il criterio di

servizio MQSeries AMI utilizzato

per gestire i messaggi. Quando

specificato, policyName si riferisce a

un criterio definito nel file di

repository AMT.XML. Se policyName

non è specificato, verrà utilizzato

DB2.DEFAULT.POLICY. La

dimensione massima di policyName

è 48 byte.

IN

collectionName Il nome della raccolta XML

abilitata.

IN

stato Il testo e i codici restituiti che

specificano se la procedura è stata

eseguita correttamente o meno, i

codici di errore generati e il numero

di documenti XML ricevuti o inviati

alla coda messaggi.

OUT

Esempi:

Nel seguente esempio di frammentazione, la chiamata dxxmqInsertAllCLOB

richiama tutti i documenti XML di input da una coda messaggi definita da

serviceName, deframmenta i documenti e inserisce i dati nelle tabelle di raccolta

SALES_ORDER, secondo l’associazione specificata nel file DAD con cui è stata

abilitata.

#include "dxx.h"

#include "dxxrc.h"

EXEC SQL INCLUDE SQLCA;

EXEC SQL BEGIN DECLARE SECTION;

char serviceName[48];

char policyName[48];

char collection[48]; /* nome di una raccolta XML */

char status[10];

short serviceName_ind;

short policyName_ind;

short collection_ind;

short status_ind;

EXEC SQL END DECLARE SECTION;

/* inizializza la variabile host e gli indicatori */

strcpy(serviceName, "myService");

252 XML Extender - Amministrazione e programmazione

Page 263: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

strcpy(policyName, "myPolicy");

strcpy(collection,"sales_ord")

status[0] = ’\0’;

serviceName_ind = 0;

policyName_ind = 0;

collection_ind = 0;

status_ind = -1;

/* Richiama la procedura memorizzata */

EXEC SQL CALL db2xml.dxxmqInsertAllCLOB(:serviceName:serviceName_ind;

:policyName:policyName_ind,

:collection:collection_ind,

:status:status_ind);

Riferimenti correlati:

v Appendice C, “Limiti di XML Extender”, a pagina 305

Capitolo 11. Procedure memorizzate e funzioni di XML Extender per MQSeries 253

Page 264: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

254 XML Extender - Amministrazione e programmazione

Page 265: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 12. XSLT (extensible stylesheet language

transformation)

Creazione di un documento HTML utilizzando un foglio di stile XSLT

XSLT (Extensible stylesheet language transformation) consiste in serie di markup

che possono essere utilizzate per applicare le regole di formattazione per ognuno

degli elementi interni ad un documento XML. XSL funziona con l’applicazione di

varie regole di stile ai contenuti di un documento XML basato sugli elementi che

incontra. Dal punto di vista della progettazione, i fogli di stile XSLT sono normali

documenti XML.

Originariamente creati per il layout di pagina, XSLT viene ora utilizzato in molti

modi. Ad esempio, può essere utilizzato come uno strumento di traduzione a

scopo generale, come sistema per riorganizzare il contenuto del documento o come

un modo per generare risultati multipli da una singola origine come ad esempio

HTML, WAP e SVG.

XSLT è un passaggio critico tra l’elaborazione XML e linguaggi più familiari come

ad esempio HTML. XSLT consente di effettuare le seguenti operazioni:

v Trasformare una struttura XML in altri tipi di dati rimuovendo o sostituendo le

tag XML

v Modificare l’ordine delle informazioni

v Estrarre informazioni speciali

v Ordinare le informazioni

Prerequisiti:

Prima di trasformare un documento XML in HTML, completare le seguenti

operazioni:

1. Inserire un documento XML nella colonna doc della tabella result_tab.

2. Creare un foglio di stile.

E’ possibile creare il relativo file HTML utilizzando i file UDF XSLTransformToFile

o XSLTransformToClob. Il primo restituisce il documento HTML in un file mentre il

secondo lo restituisce come CLOB

Procedura:

Per creare il relativo documento HTML come un file, utilizzare la seguente sintassi:

SELECT XSLTransformToFile( CAST(doc AS CLOB(4k)),

’install_dxx\samples\extenders\db2xml\xslt\getstart.xsl’,

0,

’html\getstart.html’)

FROM RESULT_TAB

dove install_dxx e la directory dove è installato DB2 XML Extender.

Per comodità, il file di comando degli esempi, install_dxx\samples\extenders\db2xml\getstart_xslt.cmd, effettua il setup e richiama XSLTransformToFile.

Riferimenti correlati:

© Copyright IBM Corp. 1999 - 2006 255

Page 266: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v “Funzione XSLTransformToFile() definita dall’utente” a pagina 257

v “Funzione XSLTransformToClob() definita dall’utente”

Funzione XSLTransformToClob() definita dall’utente

Scopo:

XSLTransformToClob() legge un documento XML come indicatore di posizione

CLOB e un foglio di stile come CLOB o da un file e restituisce il documento come

CLOB.

Sintassi:

�� XSLTransformToClob ( xmlobj , stylesheet , validate )

,

param ��

Parametri:

Parametro Tipo di dati Descrizione

xmlobj CLOB Il documento XML

stylesheet CLOB,

VARCHAR

Il foglio di stile

Il percorso e il nome del file

di input del foglio di stile

param CLOB

VARCHAR

Il documento del parametro

XSLT.

Il percorso e il nome del file

di parametro XSLT.

validate INTEGER Abilitazione (1) o

disabilitazione (0) convalida

di xmlobj

Risultati:

XSLTransformToClob() restituisce un dato di tipo CLOB, in caso di esito positivo.

Esempi:

Il seguente esempio crea una tabella, xslt_tab, in cui vengono inseriti il contenuto

dei file getstart.xml (il documento XML), getstart.xsl (il foglio di stile) e

xslt_param.xml (il documento del parametro XSLT).

CREATE TABLE xslt_tab(xmlobj CLOB(4k), stylesheet CLOB(4k), parameters CLOB(4k))

INSERT INTO xslt_tab(xmlobj, stylesheet, parameters)

VALUES( DB2XML.XMLCLOBFromFile(

install_dxx\samples\extenders\db2xml\xml\getstart.xml ),

DB2XML.XMLCLOBFromFile(install_dxx\samples\extenders\db2xml\xslt\getstart.xsl ),

DB2XML.XMLCLOBFromFile(xslt_param.xml))

Creare un file denominato xslt_param.xml contenente le seguenti righe:

<?xml version="1.0"?>

<params xmlns="http://www.ibm.com.XSLtransformParameters">

<param name="noShipments" value="true"/>

<param name="headline">I clienti...</param>

</params>

.

.

.

256 XML Extender - Amministrazione e programmazione

Page 267: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Esempio 1: il seguente esempio converte un documento XML in un documento

HTML utilizzando il foglio di stile memorizzato nella tabella xslt_tab:

SELECT XSLTransformToClob(xmlobj, stylesheet, 0)

FROM xslt_tab

Esempio 2: questo esempio converte un documento XML in un documento HTML

utilizzando un file del foglio di stile

SELECT XSLTransformToClob( xmlobj,

c:\install_dxx\samples\extenders\db2xml\xslt\getstart.xsl’, 1)

FROM xslt_tab

Esempio 3: in questo esempio, l’output viene modificata da ulteriori parametri

memorizzati nella tabella xslt_tab. Il documento del parametro XSLT definisce il

namespace. I parametri devono essere convertiti nell’elemento <param>. Il valore

corrispondente può anche essere specificato in un attributo valore o nel contenuto

dell’elemento <param>.

SELECT XSLTransformToClob(

xmlobj,

’install_dxx\samples\extenders\db2xml\xslt\getstart.xsl’,

parameters,

1)

FROM xslt_tab

Dove install_dxx è la directory in cui è stato installato DB2 XML Extender.

Funzione XSLTransformToFile() definita dall’utente

Scopo:

Converte il documento XML in entrata con il foglio di stile e il documento del

parametro XSLT. Il documento XML convertito viene scritto in un file. Quando una

directory e un suffisso vengono passati come parametri, tale UDF crea un file con

il suffisso specificato nella directory indicata.

Sintassi:

�� XSLTransformToFile ( xmlobj , stylesheet ,

,

param validate , �

� filename )

,

dir

,

suffix ��

Parametri:

Tabella 88. Descrizioni di parametro XSLTransformDir()

Parametro Tipo di dati Descrizione

xmlobj CLOB Il documento XML

stylesheet CLOB

VARCHAR

Il foglio di stile

Il percorso e il nome del file

di input del foglio di stile

param CLOB

VARCHAR

Il documento del parametro

XSLT

Il percorso e il nome del file

di parametro XSLT

Capitolo 12. XSLT (extensible stylesheet language transformation) 257

Page 268: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 88. Descrizioni di parametro XSLTransformDir() (Continua)

Parametro Tipo di dati Descrizione

validate INTEGER Abilitazione (1) o

disabilitazione (0) convalida

di xmlobj

filename VARCHAR Il nome del file di output

dir VARCHAR La directory del file di output

suffix VARCHAR Il suffisso del file di output

Risultati:

XSLTransformToFile() restituisce VARCHAR per il nome file scritto.

Esempi:

Il seguente esempio crea una tabella, xslt_tab, in cui vengono inseriti il contenuto

dei file getstart.xml (il documento XML), getstart.xsl (il foglio di stile) e

xslt_param.xml (il documento del parametro XSLT).

CREATE TABLE xslt_tab(xmlobj CLOB(4k), stylesheet CLOB(4k), parameters CLOB(4k))

INSERT INTO xslt_tab(xmlobj, stylesheet, parameters)

VALUES( DB2XML.XMLCLOBFromFile(

install_dxx\samples\extenders\db2xml\xml\getstart.xml ),

DB2XML.XMLCLOBFromFile(install_dxx\samples\

extenders\db2xml\xslt\getstart.xsl ),

DB2XML.XMLCLOBFromFile(xslt_param.xml))

dove install_dxx è la directory in cui è stato installato DB2 XML Extender.

Creare un file denominato xslt_param.xml contenente le seguenti righe:

<?xml version="1.0"?>

<params xmlns="http://www.ibm.com.XSLtransformParameters">

<param name="noShipments" value="true"/>

<param name="headline">I clienti...</param>

</params>

.

.

.

Esempio 1: questo esempio converte il documento XML in un documento HTML e

scrive il documento creato nel filespecificato:

SELECT XSLTransformFile( xmlobj, stylesheet, 0

'install_dxx\samples\extenders\db2xml\html\getstart.html')

FROM xslt_tab

dove install_dxx è la directory in cui è stato installato DB2 XML Extender.

Esempio 2: questo esempio scrive un documento XML in un file, utilizzando un

file del foglio di stile. La convalida è abilitata, ma il risultato è lo stesso. Questa

funzione è necessaria per includere i valori predefiniti da uno schema XML nel

processo di conversione.

SELECT XSLTransformToFile(xmlobj,

’install_dxx\samples\extenders\db2xml\xslt\getstart.xsl’, 1,

’install_dxx\samples\extenders\db2xml\html\getstart.html’)

FROM xslt_tab

Dove install_dxx è la directory in cui è stato installato DB2 XML Extender.

Esempio 3: in questo esempio, l’output viene modificata da ulteriori parametri

memorizzati nella tabella xslt_tab. Il documento del parametro XSLT definisce il

258 XML Extender - Amministrazione e programmazione

Page 269: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

namespace. I parametri devono essere convertiti nell’elemento <param>. Il valore

corrispondente può anche essere specificato in un attributo valore o nel contenuto

dell’elemento <param>.

SELECT XSLTransformToFile(

xmlobj,

’install_dxx\samples\extenders\db2xml\getstart.xsl’,

parameters, 1, ’install_dxx\samples\extenders\db2xml\getstart.html’)

FROM xslt_tab

Dove install_dxx è la directory in cui è stato installato DB2 XML Extender.

Esempio 4: questo esempio scrive il documento convertito in un file con un

suffisso .html suffix nella directory install_dxx\samples\extenders\db2xml\html

utilizzando il foglio di stile nella relativa colonna. Il nome file del documento

convertito è memorizzato in un’ulteriore colonna della tabella.

UPDATE TABLE xslt_tab ADD COLUMN filename VARCHAR(512)

UPDATE TABLE xslt_tab SET filename =

XSLTransformToFile(xmlobj,stylesheet, parameters, 1,

'install_dxx\samples\extenders\db2xml\html'

, ’html’)

FROM xslt_tab

Dove install_dxx è la directory in cui è stato installato DB2 XML Extender.

Capitolo 12. XSLT (extensible stylesheet language transformation) 259

Page 270: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

260 XML Extender - Amministrazione e programmazione

Page 271: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 13. Tabelle del supporto di gestione di XML Extender

Quando un database è abilitato, vengono create una tabella di repository DTD

(DTD_REF) e una tabella XML_USAGE. La tabella DTD_REF contiene informazioni

su tutti i DTD. La tabella XML_USAGE memorizza le informazioni comuni per

ogni colonna abilitata per XML.

Tabella di riferimento DTD

XML Extender può essere utilizzato anche come repository DTD di XML. Quando

un database è abilitato XML, viene creata una tabella di repository DTD, DTD_REF.

Ogni riga di questa tabella rappresenta un DTD con ulteriori informazioni sui

metadati. È possibile accedere a tale tabella e inserire i propri DTD. I DTD nella

tabella DTD_REF vengono utilizzati per convalidare i documenti XML e le

applicazioni di supporto per definire un file DAD. Tale tabella ha il nome schema

di DB2XML. Una tabella DTD_REF può contenere le colonne mostrate in

Tabella 89.

Tabella 89. Tabella DTD_REF

Nome colonna Tipo di dati Descrizione

DTDID VARCHAR(128) La chiave primaria (univoca e non NULL).

Viene utilizzata per identificare il DTD. Quando

si specifica il DTD nel file DAD, tale file deve

rispettare lo schema definito da DTD.

CONTENT XMLCLOB Il contenuto del DTD.

USAGE_COUNT INTEGER Il numero di colonne e di raccolte XML nel

database, che utilizzano il DTD per definire i

propri file DAD.

AUTHOR VARCHAR(128) L’autore del DTD. Queste informazioni sono

facoltative.

CREATOR VARCHAR(128) L’ID utente che esegue il primo inserimento.

Questa colonna è facoltativa.

UPDATOR VARCHAR(128) L’ID utente che esegue l’ultimo aggiornamento.

Questa colonna è facoltativa.

Un DTD può essere modificato dall’applicazione solo quando USAGE_COUNT è

zero.

Tabella di utilizzo XML (XML_USAGE)

La tabella XML_USAGE memorizza le informazioni comuni per ogni colonna

abilitata per XML. Il nome schema della tabella XML_USAGE è DB2XML e la

rispettiva chiave primaria è (nome_tabella, nome_col). Una tabella XML_USAGE

viene creata al momento in cui il database viene abilitato. Le colonne nella tabella

XML_USAGE vengono mostrate in Tabella 90 a pagina 262.

© Copyright IBM Corp. 1999 - 2006 261

Page 272: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 90. Tabella XML_USAGE

Nome colonna Descrizione

schema_tabella Per una colonna XML, il nome schema della

tabella utente che contiene una colonna

XML. Per una raccolta XML, il valore

DXX_COLL come nome schema predefinito.

nome_tabella Per una colonna XML, il nome della tabella

utente che contiene una colonna XML. Per

una raccolta XML, il valore

DXX_COLLECTION che identifica l’entità

come raccolta.

nome_col Il nome della colonna o raccolta XML. Fa

parte della chiave composta insieme al

nome_tabella.

DTDID Una stringa associata a un DTD inserito in

DTD_REF con un DTD specificato in un file

DAD; tale valore deve corrispondere al

valore dell’elemento DTDID in DAD. Questa

colonna è una chiave esterna.

DAD Il contenuto del file DAD associato alla

colonna o raccolta XML.

modalità_accesso Specifica quale modalità di accesso viene

utilizzata: 1 per la raccolta XML, 0 per la

colonna XML

vista_predefinita Memorizza il nome vista predefinito, se ne

esiste uno.

suffisso_trigger Non NULL. Per nomi trigger univoci.

convalida Ha il valore 1 per convalidare, 0 per ignorare

la convalida.

versione La versione trigger della colonna XML.

id_root L’ID_root della colonna XML.

qual_tab_lat Il qualificatore della tabella laterale.

Non aggiungere, modificare o eliminare voci dalla tabella XML_USAGE; essa è

stata progettata solo per un uso interno di XML Extender.

262 XML Extender - Amministrazione e programmazione

Page 273: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Capitolo 14. Risoluzione dei problemi

Risoluzione dei problemi relativi a XML Extender

Tutte le chiamate alle istruzioni SQL integrate nel programma e all’interfaccia della

riga comandi del database DB2, comprese quelle che richiamano le UDF di XML

Extender per il database DB2, generano codici che indicano se la chiamata

all’istruzione SQL integrata o alla CLI del database DB2 è stata eseguita

correttamente.

Il programma può richiamare informazioni aggiuntive che forniscono tali codici

che includono le informazioni e i messaggi di errore SQLSTATE. È possibile

utilizzare queste informazioni diagnostiche per isolare e correggere i problemi nel

programma.

A volte, la causa di un problema non può essere facilmente diagnosticata. In questi

casi, è necessario fornire informazioni all’IBM Software Support per isolare e

correggere il problema. XML Extender include una funzione di traccia che registra

ogni attività. Le informazioni di traccia possono essere un input per IBM Software

Support. È necessario utilizzare la funzione di traccia solo seguendo le istruzioni

del personale di IBM Software Support.

In questa sezione vengono descritti la funzione di traccia e i codici di errore e i

messaggi.

Riferimenti correlati:

v “Codici SQLSTATE e numeri di messaggi associati per XML Extender” a pagina

265

v “Avvio della traccia per XML Extender”

v “Arresto della traccia” a pagina 264

v “Messaggi di XML Extender” a pagina 270

Avvio della traccia per XML Extender

Scopo:

Registra l’attività del server XML Extender. Per avviare la traccia, applicare

l’opzione on a dxxtrc, insieme al profilo utente nome di una directory esistente che

contenga il file di traccia. Quando la traccia è stata abilitata, il file,

dxxINSTANCE.trc, viene inserito nella directory specificata. INSTANCE è il valore di

DB2INSTANCE. Ogni istanza DB2 ha il proprio file di log. Il file di traccia non ha

dimensioni limitate.

Sintassi:

Avvio della traccia:

�� dxxtrc on directory_traccia ��

Parametri:

© Copyright IBM Corp. 1999 - 2006 263

Page 274: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 91. Parametri di traccia

Parametro Descrizione

trace_directory Nome del percorso e della directory esistente

in cui si trova dxxINSTANCE.trc. Richiesto,

non predefinito.

Esempi:

Il seguente esempio dimostra l’avvio della traccia per un’istanza db2inst1. Il file di

traccia, dxxdb2inst1.trc, viene inserito nella directory /home/db2inst1/install_dxx/log.

dxxtrc on /home/db2inst1/install_dxx/log

Arresto della traccia

Scopo:

Disabilitare la traccia. Le informazioni di traccia non sono più registrate.

Consiglio: dal momento che la dimensione del file di log di traccia in esecuzione

non è limitata e può avere impatti sulle prestazioni, disattivare la traccia in un

ambiente di produzione.

Sintassi:

Arresto della traccia:

�� dxxtrc off ��

Esempi:

Questo esempio mostra che la funzione di traccia è disattivata.

dxxtrc off

Codici di ritorno delle UDF di XML Extender

Le istruzioni SQL integrate restituiscono dei codici nei campi SQLCODE,

SQLWARN e SQLSTATE della struttura SQLCA. Questa struttura è definita in un

file SQLCA INCLUDE.

Le chiamate alla CLI di DB2 restituiscono i valori di SQLCODE e SQLSTATE che è

possibile richiamare utilizzando la funzione SQLError.

Un valore di SQLCODE pari a 0 significa che l’istruzione è stata eseguita

correttamente (con possibili condizioni di avvertenza). Un valore positivo di

SQLCODE significa che l’istruzione è stata eseguita correttamente ma con una

avvertenza. Le istruzioni SQL integrate restituiscono anche informazioni

sull’avvertenza associata ai valori di SQLCODE 0 o positivo nel campo SQLWARN.

Un valore negativo di SQLCODE significa che si è verificato un errore.

DB2 associa un messaggio a ogni valore di SQLCODE. Se un’UDF di XML

Extender rileva una condizione di avvertenza o di errore, invia le informazioni

associate al DB2 per l’inclusione nel messaggio SQLCODE.

Le chiamate alle istruzioni SQL integrate e alla CLI del database DB2 che

richiamano le UDF di DB2 XML Extender possono restituire messaggi SQLCODE e

264 XML Extender - Amministrazione e programmazione

Page 275: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

valori SQLSTATE univoci per tali UDF, ma il database DB2 restituisce questi valori

nello stesso modo in cui li restituisce per altre istruzioni SQL integrate o per altre

chiamate alla CLI. Pertanto, il modo in cui si accede a questi valori è lo stesso per

le istruzioni SQL integrate o per le chiamate alla CLI del database DB2 che non

avviano le UDF di XML Extender del database DB2.

Codici di ritorno delle procedure memorizzate di XML Extender

XML Extender fornisce dei codici di ritorno che consentono di risolvere i problemi

che si verificano per le procedure memorizzate. Quando si riceve un codice di

ritorno da una procedura memorizzata, controllare il file riportato di seguito,

costituito dal codice di ritorno e da un numero di messaggio di errore di XML

Extender con una costante simbolica.

install_dxx/include/dxxrc.h

Riferimenti correlati:

v “Codici SQLSTATE e numeri di messaggi associati per XML Extender”

Codici SQLSTATE e numeri di messaggi associati per XML Extender

Tabella 92. Codici SQLSTATE e numeri di messaggi associati

SQLSTATE Numero messaggio Descrizione

00000 DXXnnnnI Non si è verificato alcun errore.

01HX0 DXXD003W L’elemento o l’attributo specificato

nell’espressione del percorso non

esiste nel documento XML.

38X00 DXXC000E XML Extender non è riuscito ad

aprire il file specificato.

38X01 DXXA072E XML Extender ha tentato di

eseguire automaticamente il bind

del database prima di abilitarlo, ma

non ha trovato i file di bind.

DXXC001E XML Extender non è riuscito a

trovare il file specificato.

38X02 DXXC002E XML Extender non è riuscito a

leggere i dati del file specificato.

38X03 DXXC003E XML Extender non è riuscito a

scrivere i dati nel file specificato.

DXXC011E XML Extender non è riuscito a

scrivere i dati nel file di controllo

della traccia.

38X04 DXXC004E XML Extender non è riuscito a

utilizzare l’indicatore di posizione

specificato.

38X05 DXXC005E La dimensione del file è maggiore

della dimensione XMLVarchar e

XML Extender non è in grado di

importare tutti i dati dal file.

Capitolo 14. Risoluzione dei problemi 265

Page 276: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 92. Codici SQLSTATE e numeri di messaggi associati (Continua)

SQLSTATE Numero messaggio Descrizione

38X06 DXXC006E La del dimensione file è maggiore

della dimensione XMLCLOB e XML

Extender non è in grado di

importare tutti i dati dal file.

38X07 DXXC007E Il numero di byte nell’indicatore di

posizione LOB non corrisponde alla

dimensione del file.

38X08 DXXD001E Una funzione di estrazione scalare

ha utilizzato un percorso di

ubicazione che ricorre più volte.

Una funzione scalare può utilizzare

solo un percorso di ubicazione con

ricorrenza unica.

38X09 DXXD002E L’espressione del percorso presenta

errori di sintassi.

38X10 DXXG002E XML Extender non è riuscito ad

assegnare la memoria dal sistema

operativo.

38X11 DXXA009E Questa procedura memorizzata

viene utilizzata solo per una

colonna XML.

38X12 DXXA010E Durante l’abilitazione della colonna,

XML Extender non è riuscito a

trovare il DTD ID specificato nel file

DAD.

DXXQ060E XML Extender non è riuscito a

trovare SCHEMA ID durante

l’abilitazione della colonna.

SCHEMA ID corrisponde al valore

dell’attributo di ubicazione della tag

nonamespacelocation interna alla

tag schemabindings nel file DAD.

38X13 DXXQ072E XML Extender utilizza XML Parser

distribuito con XML Toolkit per

iSeries.

38X14 DXXD000E Si è tentato di memorizzare un

documento non valido in una

tabella. Convalida non riuscita.

38X15 DXXA056E L’elemento di validazione nel file

DAD (document access definition)

manca o non è valido.

DXXA057E L’attributo nome di una tabella

laterale nel file DAD (document

access definition) manca o non è

valido.

DXXA058E L’attributo nome di una colonna nel

file DAD (document access

definition) manca o non è valido.

DXXA059E L’attributo tipo di una colonna nel

file DAD (document access

definition) manca o non è valido.

266 XML Extender - Amministrazione e programmazione

Page 277: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 92. Codici SQLSTATE e numeri di messaggi associati (Continua)

SQLSTATE Numero messaggio Descrizione

DXXA060E L’attributo percorso di una colonna

nel file DAD (document access

definition) manca o non è valido.

DXXA061E L’attributo multi_occurrence di una

colonna nel file DAD (document

access definition) manca o non è

valido.

DXXQ000E Un elemento obbligatorio non è

presente nel file DAD (document

access definition).

DXXQ056E L’elemento o attributo specificato

non può essere associato ad una

colonna che è indicata come parte

di una chiave esterna. I valori dei

dati per le chiavi esterne sono

determinati dalle chiavi primarie;

l’elemento/attributo specificato nel

documento XML non deve essere

necessariamente associato ad una

tabella e colonna.

DXXQ057E Le tag schemabindings e ID DTD

non possono essere entrambe

presenti nel file DAD.

DXXQ058E Nel file DAD manca la tag

nonamespacelocation all’interno

della tag schemabindings.

DXXQ059E La tag doctype non può essere

presente all’interno della tag

XCollection nel DAD di validazione

schema.

DXXQ062E Questa condizione di errore è

solitamente causata da una specifica

multi_occurrence = YES mancante

per l’elemento element_node

principale dell’elemento o attributo

specificato.

DXXQ063E Il valore dell’attributo

multi_occurrence sull’elemento

element_node specificato nel file

DAD (document access definition)

manca o non è corretto. Il valore

deve essere ’yes’ o ’no’, non

sensibile al maiuscolo/minuscolo.

DXXQ064E Una colonna delle chiavi specificata

nella condizione join non era

associata ad alcun nodo di elementi

o attributi.

38X16 DXXG004E Ad una procedura memorizzata

XML è stato passato un valore null

per un parametro obbligatorio.

Capitolo 14. Risoluzione dei problemi 267

Page 278: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 92. Codici SQLSTATE e numeri di messaggi associati (Continua)

SQLSTATE Numero messaggio Descrizione

38X17 DXXQ001E L’istruzione SQL nel DAD

(document access definition) o

l’istruzione che viene sostituita non

è valida. È necessaria un’istruzione

SELECT per la creazione di

documenti XML.

38X18 DXXG001E XML Extender ha rilevato un errore

interno.

DXXG006E XML Extender ha rilevato un errore

interno durante l’utilizzo di CLI.

38X19 DXXQ002E La memoria o lo spazio su disco del

sistema si sta esaurendo. Non è

disponibile spazio sufficiente per

contenere i documenti XML

ottenuti.

38X20 DXXQ003W L’interrogazione SQL definita

dall’utente genera un numero di

documenti superiore al numero

massimo specificato. Viene restituito

solo il numero di documenti

specificato.

38X21 DXXQ004E La colonna specificata non è una

delle colonne comprese nei risultati

dell’interrogazione SQL.

38X22 DXXQ005E L’associazione dell’interrogazione

SQL a XML è errata.

38X23 DXXQ006E L’elemento attribute_node nel file

DAD (document access definition)

non presenta un attributo nome.

38X24 DXXQ007E L’elemento attribute_node nel file

DAD (document access definition)

non presenta un elemento colonna o

un RDB_node.

38X25 DXXQ008E L’elemento text_node nel file DAD

(document access definition) non

presenta un elemento colonna.

38X26 DXXQ009E Impossibile trovare la tabella dei

risultati specificata nel catalogo di

sistema.

38X27 DXXQ010E

DXXQ040E

E’ necessario che RDB_node di

attribute_node o di text_node

presenti una tabella.

DXXQ011E È necessario che RDB_node di

attribute_node o di text_node

presenti una colonna.

DXXQ017E Il documento XML generato da

XML Extender è troppo grande per

rientrare nella colonna della tabella

dei risultati.

DXXQ040E Il nome elemento specificato nel file

DAD non è corretto.

268 XML Extender - Amministrazione e programmazione

Page 279: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 92. Codici SQLSTATE e numeri di messaggi associati (Continua)

SQLSTATE Numero messaggio Descrizione

38X28 DXXQ012E XML Extender non è riuscito a

trovare l’elemento previsto durante

l’elaborazione della DAD.

DXXQ016E È necessario definire tutte le tabelle

nel RDB_node dell’elemento iniziale

del file DAD (document access

definition). Le tabelle dell’elemento

secondario devono corrispondere

alle tabelle definite nell’elemento

iniziale. Il nome tabella in questo

RDB_node non è ubicato

nell’elemento iniziale.

38X29 DXXQ013E La tabella o la colonna

dell’elemento deve presentare un

nome nel file DAD (document

access definition).

DXXQ015E La condizione dell’elemento

condizione nel file DAD (document

access definition) presenta un

formato non corretto.

DXXQ061E Il formato della rappresentazione in

stringa non è valido. Se la stringa è

un valore data, ora o data/ora, la

sintassi non è conforme al tipo di

dati.

38X30 DXXQ014E Un elemento element_node nel file

DAD (document access definition)

non presenta un attributo nome.

DXXQ018E Manca la clausola ORDER BY

nell’istruzione SQL in un file DAD

(document access definition) che

associa SQL a XML.

38X31 DXXQ019E L’elemento objids non presenta

alcun elemento colonna nel file

DAD (document access definition)

che associ SQL a XML.

38X33 DXXG005E Questo parametro non è supportato

in questo release. Verrà supportato

nel release successivo.

38X34 DXXG000E È stato specificato un nome file non

corretto.

38X36 DXXA073E Il bind del database non era stato

eseguito quando l’utente ha tentato

di abilitarlo.

38X37 DXXG007E La locale del sistema operativo del

server non corrisponde alla

codepage DB2.

38X38 DXXG008E Impossibile rilevare la locale del

sistema operativo del server nella

tabella delle code page.

Capitolo 14. Risoluzione dei problemi 269

Page 280: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 92. Codici SQLSTATE e numeri di messaggi associati (Continua)

SQLSTATE Numero messaggio Descrizione

38X41 DXXQ048E Il processore del foglio di stile ha

rilevato un errore interno. Il

documento XML oppure il foglio di

stile potrebbero non essere validi.

38X42 DXXQ049E Il file di output specificato esiste già

nella directory.

38X43 DXXQ050E La UDF non è riuscita a creare un

nome file univoco per il documento

di output nella directory specificata

in quanto non dispone dell’accesso

richiesto. I nomi file da generare

sono in uso oppure la directory non

esiste.

38X44 DXXQ051E Uno o più parametri di input o di

output non presentano valori validi.

38X45 DXXQ055E Si è verificato un errore ICU

durante un’operazione di

conversione.

Messaggi di XML Extender

DXXA000I Abilitazione della colonna

<nome_colonna. Attendere.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXA001S Si è verificato un errore imprevisto nel

build <ID build>, file <nome file>, riga

<numero riga>.

Spiegazione: Si è verificato un errore non previsto.

Risposta dell’utente: Se l’errore persiste, contattare

l’assistenza tecnica. Quando l’errore viene notificato,

includere l’intero testo del messaggio, il file di traccia e

la spiegazione su come riprodurre il problema.

DXXA002I Connessione al database <database> in

corso.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXA003E Impossibile connettersi al database

<database>.

Spiegazione: È possibile che il database specificato

non esista o sia danneggiato.

Risposta dell’utente:

1. Accertarsi che il database sia specificato

correttamente.

2. Verificare che il database esista e sia accessibile.

3. Stabilire se il database è danneggiato. In tal caso,

richiedere al responsabile del database di

ripristinarlo da un backup.

DXXA004E Impossibile abilitare il database

<database>.

Spiegazione: È possibile che il database sia già

abilitato o danneggiato.

Risposta dell’utente:

1. Stabilire se il database è già abilitato.

2. Stabilire se il database è danneggiato. In tal caso,

richiedere al responsabile del database di

ripristinarlo da un backup.

DXXA005I Abilitazione del database <database> in

corso. Attendere.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXA006I Il database <database> è stato abilitato

correttamente.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXA007E Impossibile disabilitare il database

<database>.

270 XML Extender - Amministrazione e programmazione

Page 281: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Spiegazione: Il database non può essere disabilitato

da XML Extender se contiene colonne o raccolte XML.

Risposta dell’utente: Eseguire il backup dei dati

importanti, disabilitare le colonne o le raccolte XML e

aggiornare o cancellare le tabelle in modo da eliminare

tutti i tipi di dati XML dal database.

DXXA008I Disabilitazione della colonna <nome

colonna> in corso. Attendere.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXA009E La tag Xcolumn non è specificata nel

file DAD.

Spiegazione: Questa procedura memorizzata viene

utilizzata solo per la colonna XML.

Risposta dell’utente: Accertarsi che la tag Xcolumn

sia specificata correttamente nel file DAD.

DXXA010E Impossibile trovare l’ID DTD <id dtd>.

Spiegazione: Durante l’abilitazione della colonna,

XML Extender non è riuscito a trovare il DTD ID

specificato nel file DAD.

Risposta dell’utente: Accertarsi che sia specificato il

valore corretto per il DTD ID nel file DAD.

DXXA011E L’inserimento nella tabella

DB2XML.XML_USAGE non ha avuto

esito positivo.

Spiegazione: Durante l’abilitazione della colonna,

XML Extender non è riuscito ad inserire un record nella

tabella DB2XML.XML_USAGE.

Risposta dell’utente: Accertarsi che la tabella

DB2XML.XML_USAGE esista e che non contenga già

un record con lo stesso nome.

DXXA012E Il tentativo di aggiornamento della

tabella DB2XML.DTD_REF non ha

avuto esito positivo.

Spiegazione: Durante l’abilitazione della colonna,

XML Extender non è riuscito ad aggiornare la tabella

DB2XML.DTD_REF.

Risposta dell’utente: Accertarsi che la tabella

DB2XML.DTD_REF esista. Verificare se la tabella è

danneggiata o se l’ID utente di gestione dispone

dell’autorizzazione appropriata per aggiornare la

tabella.

DXXA013E Il tentativo di modifica della tabella

<nome tabella> non ha avuto esito

positivo.

Spiegazione: Durante l’abilitazione della colonna,

XML Extender non è riuscito a modificare la tabella

specificata.

Risposta dell’utente: Controllare i privilegi necessari

per modificare la tabella.

DXXA014E La colonna ID root specificata: <id root>

non è una chiave primaria singola della

tabella <nome tabella>.

Spiegazione: L’ID root specificato non è una chiave o

non è una chiave singola della tabella nome tabella.

Risposta dell’utente: Accertarsi che l’ID root

specificato rappresenti la chiave primaria singola della

tabella.

DXXA015E La colonna DXXROOT_ID esiste già

nella tabella <nome tabella>.

Spiegazione: La colonna DXXROOT_ID esiste, ma non

è stata creata da XML Extender.

Risposta dell’utente: Specificare una colonna primaria

per l’opzione ID root durante l’abilitazione della

colonna, utilizzando un nome colonna differente.

DXXA016E La tabella di input <nome tabella> non

esiste.

Spiegazione: XML Extender non è riuscito a trovare la

tabella specificata nel catalogo di sistema.

Risposta dell’utente: Accertarsi che la tabella esista

nel database e che sia stata specificata correttamente.

DXXA017E La colonna di input <nome colonna> non

esiste nella tabella specificata <nome

tabella>.

Spiegazione: XML Extender non è riuscito a trovare la

colonna nel catalogo di sistema.

Risposta dell’utente: Accertarsi che una tabella utente

contenga la colonna.

DXXA018E La colonna specificata non è abilitata

per i dati XML.

Spiegazione: Durante la disabilitazione della colonna,

XML Extender non è riuscito a trovare la colonna nella

tabella DB2XML.XML_USAGE che indica che la

colonna non è abilitata. Se la colonna non è abilitata

per XML, non occorre disabilitarla.

Risposta dell’utente: Non è richiesta alcuna azione.

Capitolo 14. Risoluzione dei problemi 271

Page 282: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

DXXA019E Un parametro di input richiesto per

abilitare la colonna è null.

Spiegazione: Un parametro di input per la procedura

memorizzata enable_column() è null.

Risposta dell’utente: Controllare tutti i parametri di

input per la procedura memorizzata enable_column().

DXXA020E Impossibile trovare le colonne nella

tabella <nome tabella>.

Spiegazione: Durante la creazione della vista

predefinita, XML Extender non è riuscito a trovare le

colonne nella tabella specificata.

Risposta dell’utente: Accertarsi che i nomi tabella e

colonna vengano specificati correttamente.

DXXA021E Impossibile creare la vista predefinita

<vista predefinita>.

Spiegazione: Durante l’abilitazione di una colonna,

XML Extender non è riuscito a creare la vista

specificata.

Risposta dell’utente: Accertarsi che il nome della vista

predefinita sia univoco. Se esiste già una vista con lo

stesso nome, specificare un nome univoco per la vista

predefinita.

DXXA022I La colonna <nome colonna> è stata

abilitata.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna risposta.

DXXA023E Impossibile trovare il file DAD.

Spiegazione: Durante la disabilitazione di una

colonna, XML Extender non è riuscito a trovare il file

DAD.

Risposta dell’utente: Accertarsi che vengano

specificati i nomi database, tabella e colonna corretti.

DXXA024E XML Extender ha rilevato un errore

interno durante l’accesso alle tabelle di

catalogo del sistema.

Spiegazione: XML Extender non è riuscito ad accedere

alla tabella di catalogo del sistema.

Risposta dell’utente: Accertarsi che il database risulti

in uno stato stabile.

DXXA025E Impossibile cancellare la vista

predefinita <vista predefinita>.

Spiegazione: Durante la disabilitazione di una

colonna, XML Extender non è riuscito a cancellare la

vista predefinita.

Risposta dell’utente: Accertarsi che l’ID utente di

gestione per XML Extender disponga dei privilegi

necessari per cancellare la vista predefinita.

DXXA026E Impossibile cancellare la tabella laterale

<tabella laterale>.

Spiegazione: Durante la disabilitazione di una

colonna, XML Extender non è riuscito a cancellare la

tabella specificata.

Risposta dell’utente: Accertarsi che l’ID utente di

gestione per XML Extender disponga dei privilegi

necessari per cancellare la tabella laterale.

DXXA027E Non è stato possibile disabilitare la

colonna.

Spiegazione: XML Extender non è riuscito a

disabilitare una colonna in quanto un trigger interno

non è stato eseguito regolarmente. Cause possibili:

v Il sistema ha esaurito la memoria.

v Non esiste un trigger con questo nome.

Risposta dell’utente: Utilizzare la funzione di traccia

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

DXXA028E Non è stato possibile disabilitare la

colonna.

Spiegazione: XML Extender non è riuscito a

disabilitare una colonna in quanto un trigger interno

non è stato eseguito regolarmente. Cause possibili:

v Il sistema ha esaurito la memoria.

v Non esiste un trigger con questo nome.

Risposta dell’utente: Utilizzare la funzione di traccia

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

DXXA029E Non è stato possibile disabilitare la

colonna.

Spiegazione: XML Extender non è riuscito a

disabilitare una colonna in quanto un trigger interno

non è stato eseguito regolarmente. Cause possibili:

v Il sistema ha esaurito la memoria.

v Non esiste un trigger con questo nome.

Risposta dell’utente: Utilizzare la funzione di traccia

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

272 XML Extender - Amministrazione e programmazione

Page 283: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

DXXA030E Non è stato possibile disabilitare la

colonna.

Spiegazione: XML Extender non è riuscito a

disabilitare una colonna in quanto un trigger interno

non è stato eseguito regolarmente. Cause possibili:

v Il sistema ha esaurito la memoria.

v Non esiste un trigger con questo nome.

Risposta dell’utente: Utilizzare la funzione di traccia

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

DXXA031E Impossibile reimpostare il valore della

colonna DXXROOT_ID nella tabella

applicativa su NULL.

Spiegazione: Durante la disabilitazione di una

colonna, XML Extender non è riuscito a impostare il

valore DXXROOT_ID su NULL nella tabella

applicativa.

Risposta dell’utente: Accertarsi che l’ID utente di

gestione per XML Extender disponga dei privilegi

necessari per modificare la tabella applicativa.

DXXA032E La riduzione del valore

USAGE_COUNT nella tabella

DB2XML.XML_USAGE non ha avuto

esito positivo.

Spiegazione: Durante la disabilitazione della colonna,

XML Extender non è riuscito a ridurre il valore della

colonna USAGE_COUNT.

Risposta dell’utente: Accertarsi che la tabella

DB2XML.XML_USAGE esista e che l’ID utente di

gestione per XML Extender disponga dei privilegi

necessari per aggiornarla.

DXXA033E Il tentativo di cancellazione di una riga

dalla tabella DB2XML.XML_USAGE

non ha avuto esito positivo.

Spiegazione: Durante la disabilitazione di una

colonna, XML Extender non è riuscito a cancellare la

riga corrispondente nella tabella

DB2XML.XML_USAGE.

Risposta dell’utente: Accertarsi che la tabella

DB2XML.XML_USAGE esista e che l’ID utente di

gestione per XML Extender disponga dei privilegi

necessari per aggiornarla.

DXXA034I XML Extender ha disabilitato la colonna

<nome colonna> con esito positivo.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXA035I XML Extender sta disabilitando il

database <database>. Attendere.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXA036I XML Extender ha disabilitato il database

<database> con esito positivo.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXA037E Il nome del tablespace specificato

supera i 18 caratteri.

Spiegazione: Il nome del tablespace non può superare

i 18 caratteri alfanumerici.

Risposta dell’utente: Specificare un nome inferiore a

18 caratteri.

DXXA038E Il nome vista predefinita specificato

supera i 18 caratteri.

Spiegazione: Il nome della vista predefinita non può

superare i 18 caratteri alfanumerici.

Risposta dell’utente: Specificare un nome inferiore a

18 caratteri.

DXXA039E Il nome ROOT_ID specificato supera i

18 caratteri.

Spiegazione: Il nome ROOT_ID non può superare i 18

caratteri alfanumerici.

Risposta dell’utente: Specificare un nome inferiore a

18 caratteri.

DXXA046E Impossibile creare la tabella laterale

<tabella laterale>.

Spiegazione: Durante l’abilitazione di una colonna,

XML Extender non è riuscito a creare la tabella laterale

specificata.

Risposta dell’utente: Accertarsi che l’ID utente di

gestione per XML Extender disponga dei privilegi

necessari per creare la tabella laterale.

DXXA047E Non è stato possibile abilitare la

colonna.

Spiegazione: XML Extender non è riuscito ad abilitare

una colonna in quanto un trigger interno non è stato

eseguito regolarmente. Cause possibili:

v Il file DAD ha una sintassi non corretta.

v Il sistema ha esaurito la memoria.

v Esiste un altro trigger con lo stesso nome.

Risposta dell’utente: Utilizzare la funzione di traccia

Capitolo 14. Risoluzione dei problemi 273

Page 284: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

DXXA048E Non è stato possibile abilitare la

colonna.

Spiegazione: XML Extender non è riuscito ad abilitare

una colonna in quanto un trigger interno non è stato

eseguito regolarmente. Cause possibili:

v Il file DAD ha una sintassi non corretta.

v Il sistema ha esaurito la memoria.

v Esiste un altro trigger con lo stesso nome.

Risposta dell’utente: Utilizzare la funzione di traccia

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

DXXA049E Non è stato possibile abilitare la

colonna.

Spiegazione: XML Extender non è riuscito ad abilitare

una colonna in quanto un trigger interno non è stato

eseguito regolarmente. Cause possibili:

v Il file DAD ha una sintassi non corretta.

v Il sistema ha esaurito la memoria.

v Esiste un altro trigger con lo stesso nome.

Risposta dell’utente: Utilizzare la funzione di traccia

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

DXXA050E Non è stato possibile abilitare la

colonna.

Spiegazione: XML Extender non è riuscito ad abilitare

una colonna in quanto un trigger interno non è stato

eseguito regolarmente. Cause possibili:

v Il file DAD ha una sintassi non corretta.

v Il sistema ha esaurito la memoria.

v Esiste un altro trigger con lo stesso nome.

Risposta dell’utente: Utilizzare la funzione di traccia

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

DXXA051E Non è stato possibile disabilitare la

colonna.

Spiegazione: XML Extender non è riuscito a

disabilitare una colonna in quanto un trigger interno

non è stato eseguito regolarmente. Cause possibili:

v Il sistema ha esaurito la memoria.

v Non esiste un trigger con questo nome.

Risposta dell’utente: Utilizzare la funzione di traccia

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

DXXA052E Non è stato possibile disabilitare la

colonna.

Spiegazione: XML Extender non è riuscito a

disabilitare una colonna in quanto un trigger interno

non è stato eseguito regolarmente. Cause possibili:

v Il file DAD ha una sintassi non corretta.

v Il sistema ha esaurito la memoria.

v Esiste un altro trigger con lo stesso nome.

Risposta dell’utente: Utilizzare la funzione di traccia

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

DXXA053E Non è stato possibile abilitare la

colonna.

Spiegazione: XML Extender non è riuscito ad abilitare

una colonna in quanto un trigger interno non è stato

eseguito regolarmente. Cause possibili:

v Il file DAD ha una sintassi non corretta.

v Il sistema ha esaurito la memoria.

v Esiste un altro trigger con lo stesso nome.

Risposta dell’utente: Utilizzare la funzione di traccia

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

DXXA054E Non è stato possibile abilitare la

colonna.

Spiegazione: XML Extender non è riuscito ad abilitare

una colonna in quanto un trigger interno non è stato

eseguito regolarmente. Cause possibili:

v Il file DAD ha una sintassi non corretta.

v Il sistema ha esaurito la memoria.

v Esiste un altro trigger con lo stesso nome.

Risposta dell’utente: Utilizzare la funzione di traccia

per creare un file di traccia ed eliminare il problema. Se

il problema persiste, contattare l’assistenza tecnica e

fornire il file di traccia.

DXXA056E Il valore di validazione <valore

validazione> nel file DAD non è corretto.

Spiegazione: L’elemento di validazione nel file DAD

(document access definition) manca o non è valido.

Risposta dell’utente: Accertarsi che l’elemento di

validazione sia specificato correttamente nel file DAD.

274 XML Extender - Amministrazione e programmazione

Page 285: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

DXXA057E Un nome tabella laterale <nome tabella>

nel file DAD non è valido.

Spiegazione: L’attributo nome di una tabella laterale

nel file DAD (document access definition) manca o non

è valido.

Risposta dell’utente: Accertarsi che l’attributo nome

di una tabella laterale sia specificato correttamente nel

file DAD.

DXXA058E Un nome colonna <nome colonna> nel

file DAD non è valido.

Spiegazione: L’attributo nome di una colonna nel file

DAD (document access definition) manca o non è

valido.

Risposta dell’utente: Accertarsi che l’attributo nome

di una colonna sia specificato correttamente nel file

DAD.

DXXA059E Il tipo <tipo> della colonna <nome

colonna> nel file DAD non è valido.

Spiegazione: L’attributo tipo di una colonna nel file

DAD (document access definition) manca o non è

valido.

Risposta dell’utente: Accertarsi che l’attributo tipo di

una colonna sia specificato correttamente nel file DAD.

DXXA060E L’attributo percorso <percorso ubicazione>

di <nome colonna> nel file DAD non è

valido.

Spiegazione: L’attributo percorso di una colonna nel

file DAD (document access definition) manca o non è

valido.

Risposta dell’utente: Accertarsi che l’attributo

percorso di una colonna sia specificato correttamente

nel file DAD.

DXXA061E L’attributo multi_occurrence

<multi_occurrence> di <nome colonna> nel

file DAD non è valido.

Spiegazione: L’attributo multi_occurrence di una

colonna nel file DAD (document access definition)

manca o non è valido.

Risposta dell’utente: Accertarsi che l’attributo

multi_occurrence di una colonna sia specificato

correttamente nel file DAD.

DXXA062E Impossibile richiamare il numero di

colonna per <nome colonna> nella tabella

<nome tabella>.

Spiegazione: XML Extender non è riuscito a

richiamare il numero di colonna per nome colonna nella

tabella nome tabella dal catalogo di sistema.

Risposta dell’utente: Accertarsi che la tabella

applicativa sia definita correttamente.

DXXA063I Abilitazione della raccolta <nome

raccolta> in corso. Attendere.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXA064I Disabilitazione della raccolta <nome

raccolta> in corso. Attendere.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXA065E L’operazione di richiamo della

procedura memorizzata <nome procedura>

non ha avuto esito positivo.

Spiegazione: Esaminare la libreria condivisa db2xml e

verificare che l’autorizzazione sia corretta.

Risposta dell’utente: Accertarsi che il client disponga

dell’autorizzazione appropriata per eseguire la

procedura memorizzata.

DXXA066I XML Extender ha disabilitato la raccolta

<nome raccolta> con esito positivo.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna risposta.

DXXA067I XML Extender ha abilitato la raccolta

<nome raccolta> con esito positivo.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna risposta.

DXXA068I XML Extender ha attivato la funzione di

traccia con esito positivo.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna risposta.

DXXA069I XML Extender ha disattivato la funzione

di traccia con esito positivo.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna risposta.

DXXA070W Il database è già stato abilitato.

Spiegazione: Il comando enable database è stato

eseguito sul database abilitato.

Risposta dell’utente: Non è richiesta alcuna azione.

Capitolo 14. Risoluzione dei problemi 275

Page 286: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

DXXA071W Il database è già stato disabilitato.

Spiegazione: Il comando disable database è stato

eseguito su un database disabilitato.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXA072E XML Extender non ha trovato i file di

bind. Eseguire il bind del database

prima di abilitarlo.

Spiegazione: XML Extender ha tentato di eseguire

automaticamente il bind del database prima di

abilitarlo.

Risposta dell’utente: Eseguire il bind del database

prima di abilitarlo.

DXXA073E Non è stato eseguito il bind del

database. Eseguire il bind del database

prima di abilitarlo.

Spiegazione: Il bind del database non era stato

eseguito quando l’utente ha tentato di abilitarlo.

Risposta dell’utente: Eseguire il bind del database

prima di abilitarlo.

DXXA074E Tipo di parametro errato. La procedura

memorizzata prevede l’utilizzo del

parametro STRING.

Spiegazione: La procedura memorizzata prevede

l’utilizzo del parametro STRING.

Risposta dell’utente: Specificare STRING come tipo di

parametro di input.

DXXA075E Tipo di parametro errato. Il parametro di

input deve essere di tipo LONG.

Spiegazione: La procedura memorizzata prevede

l’utilizzo del parametro di input di tipo LONG.

Risposta dell’utente: Specificare LONG come tipo di

parametro di input.

DXXA076E ID di istanza di traccia XML Extender

non valido.

Spiegazione: Impossibile avviare una traccia con l’ID

di istanza fornito.

Risposta dell’utente: Accertarsi che l’ID di istanza sia

un ID utente iSeries valido.

DXXA077E La chiave di licenza non è valida.

Consultare la registrazione degli errori

del server per ulteriori informazioni.

Spiegazione: La licenza software è scaduta o non

esiste.

Risposta dell’utente: Contattare il fornitore del

software per ottenere una nuova licenza.

DXXC000E Impossibile aprire il file specificato.

Spiegazione: XML Extender non è riuscito ad aprire il

file specificato.

Risposta dell’utente: Accertarsi che l’ID utente

dell’applicazione disponga delle autorizzazioni di

scrittura e lettura sul file.

DXXC001E Il file specificato non è stato trovato.

Spiegazione: XML Extender non è riuscito a trovare il

file specificato.

Risposta dell’utente: Accertarsi che il file esista e che

il percorso sia stato specificato correttamente.

DXXC002E Impossibile leggere il file.

Spiegazione: XML Extender non è riuscito a leggere i

dati del file specificato.

Risposta dell’utente: Accertarsi che l’ID utente

dell’applicazione disponga dell’autorizzazione in lettura

sul file.

DXXC003E Impossibile scrivere nel file specificato.

Spiegazione: XML Extender non è riuscito a scrivere i

dati nel file specificato.

Risposta dell’utente: Accertarsi che l’ID utente

dell’applicazione disponga dell’autorizzazione in

scrittura sul file.

DXXC004E Impossibile utilizzare l’indicatore di

posizione LOB: rc=<rc indicatore>.

Spiegazione: XML Extender non è riuscito a utilizzare

l’indicatore di posizione specificato.

Risposta dell’utente: Accertarsi che l’indicatore di

posizione LOB sia stato impostato correttamente.

DXXC005E La dimensione del file di input è

maggiore della dimensione di

XMLVarchar.

Spiegazione: La dimensione file è maggiore della

dimensione XMLVarchar e XML Extender non è riuscito

a importare tutti i dati dal file.

Risposta dell’utente: Utilizzare il tipo di colonna

XMLCLOB.

DXXC006E Il file di input supera il limite LOB del

database DB2.

Spiegazione: La dimensione file è maggiore della

dimensione XMLCLOB e XML Extender non è riuscito

a importare tutti i dati dal file.

276 XML Extender - Amministrazione e programmazione

Page 287: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Risposta dell’utente: Scomporre il file in oggetti più

piccoli oppure utilizzare una raccolta XML.

DXXC007E Impossibile richiamare i dati dal file

nell’indicatore di posizione LOB.

Spiegazione: Il numero di byte nell’indicatore di

posizione LOB non corrisponde alla dimensione del

file.

Risposta dell’utente: Accertarsi che l’indicatore di

posizione LOB sia stato impostato correttamente.

DXXC008E Impossibile rimuovere il file <nome file>.

Spiegazione: Il file presenta una violazione di accesso

condiviso o è ancora aperto.

Risposta dell’utente: Chiudere il file o arrestare i

processi in corso relativi al file. È possibile che sia

necessario arrestare e riavviare il DB2.

DXXC009E Impossibile creare il file nella directory

<directory>.

Spiegazione: XML Extender non è riuscito a creare un

file nella directory directory.

Risposta dell’utente: Accertarsi che la directory esista,

che l’ID utente dell’applicazione disponga delle

autorizzazioni sulla directory e che il file system abbia

spazio sufficiente per il file.

DXXC010E Errore in fase di scrittura nel file <nome

file>.

Spiegazione: Si è verificato un errore durante la

scrittura nel file nome file.

Risposta dell’utente: Accertarsi che il file system

abbia spazio sufficiente per il file.

DXXC011E Impossibile scrivere nel file di controllo

traccia.

Spiegazione: XML Extender non è riuscito a scrivere i

dati nel file di controllo della traccia.

Risposta dell’utente: Accertarsi che l’ID utente

dell’applicazione disponga dell’autorizzazione in

scrittura sul file.

DXXC012E Impossibile creare il file temporaneo.

Spiegazione: Non è possibile creare il file nella

directory temporanea di sistema.

Risposta dell’utente: Accertarsi che l’ID utente

dell’applicazione disponga delle autorizzazioni sulla

directory temporanea di sistema e che il file system

abbia spazio sufficiente per il file.

DXXC013E I risultati delle UDF estratte superano il

limite di dimensione del tipo di ritorno

dell’UDF.

Spiegazione: I dati estratti da una UDF di estrazione

devono rientrare nei limiti di dimensione del tipo di

ritorno della UDF, come definito nel manuale IBM DB2

XML Extender Administration and Programming. Ad

esempio, i risultati di extractVarchar non devono

superare 4000 byte (incluso il NULL finale).

Risposta dell’utente: Utilizzare una UDF di estrazione

che abbia un limite maggiore per il tipo di ritorno: 254

byte per extractChar(), 4 KB per extractVarchar(), 2 GB

per extractClob().

DXXD000E Un documento XML non valido è stato

rifiutato.

Spiegazione: Si è tentato di memorizzare un

documento non valido in una tabella. La validazione

non ha avuto esito positivo.

Risposta dell’utente: Controllare il documento e la

relativa DTD utilizzando un editor in grado di

visualizzare i caratteri non validi che non risultano

visibili. Per correggere questo errore, disattivare la

funzione di validazione nel file DAD.

DXXD001E <percorso ubicazione> ricorre più volte.

Spiegazione: Una funzione di estrazione scalare ha

utilizzato un percorso di ubicazione che ricorre più

volte. Una funzione scalare può utilizzare solo un

percorso di ubicazione che non ha ricorrenze multiple.

Risposta dell’utente: Utilizzare una funzione di

tabella (e una ’s’ alla fine del nome della funzione

scalare).

DXXD002E Si è verificato un errore di sintassi alla

posizione <posizione> nel percorso di

ricerca.

Spiegazione: L’espressione del percorso presenta

errori di sintassi.

Risposta dell’utente: Correggere l’argomento del

percorso di ricerca dell’interrogazione. Consultare la

documentazione per informazioni sulla sintassi corretta.

DXXD003W Percorso non trovato. Viene restituito

null.

Spiegazione: L’elemento o l’attributo specificato

nell’espressione del percorso non esiste nel documento

XML.

Risposta dell’utente: Verificare che il percorso

specificato sia corretto.

Capitolo 14. Risoluzione dei problemi 277

Page 288: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

DXXG000E Il nome file <nome file> non è valido.

Spiegazione: È stato specificato un nome file non

corretto.

Risposta dell’utente: Specificare un nome file corretto

e rieseguire l’operazione.

DXXG001E Si è verificato un errore imprevisto nel

build <ID build>, file <nome file>, riga

<numero riga>.

Spiegazione: XML Extender ha rilevato un errore

interno.

Risposta dell’utente: Contattare l’assistenza tecnica.

Quando l’errore viene notificato, includere tutti i

messaggi, il file di traccia e la spiegazione su come

riprodurre l’errore.

DXXG002E Il sistema ha esaurito la memoria.

Spiegazione: XML Extender non è riuscito ad

assegnare la memoria dal sistema operativo.

Risposta dell’utente: Chiudere alcune applicazioni e

rieseguire l’operazione. Se il problema persiste,

consultare la documentazione relativa al proprio

sistema operativo. Alcuni sistemi operativi richiedono

di riavviare il sistema.

DXXG004E Parametro null non valido.

Spiegazione: Ad una procedura memorizzata XML è

stato passato un valore null per un parametro

obbligatorio.

Risposta dell’utente: Controllare tutti i parametri

obbligatori nell’elenco degli argomenti per il richiamo

della procedura memorizzata.

DXXG005E Parametro non supportato.

Spiegazione: Il parametro non è supportato in questo

release, verrà supportato nel release successivo.

Risposta dell’utente: Impostare questo parametro su

NULL.

DXXG006E Errore interno CLISTATE=<stato_cli>,

RC=<cr_cli>, build <ID_build>, file

<nome_file>, riga <numero_riga>

CLIMSG=<msg_CLI>.

Spiegazione: XML Extender ha rilevato un errore

interno durante l’utilizzo di CLI.

Risposta dell’utente: Contattare l’assistenza tecnica. È

possibile che questo errore sia stato causato da

un’immissione non corretta. Quando l’errore viene

notificato, includere tutti i messaggi di output, il file di

traccia e la spiegazione su come riprodurre l’errore. Se

possibile, inviare le DAD, i documenti XML e le

definizioni di tabella utilizzate.

DXXG007E La locale <locale> è incongruente con la

codepage DB2 <code_page>.

Spiegazione: La locale del sistema operativo non

corrisponde alla codepage DB2.

Risposta dell’utente: Correggere la locale del sistema

operativo del server e riavviare DB2.

DXXG008E Locale <locale> non supportata.

Spiegazione: Impossibile rilevare la locale del sistema

operativo del server nella tabella delle code page.

Risposta dell’utente: Correggere la locale del sistema

operativo del server e riavviare DB2.

DXXG017E Il limite per costante XML Extender è

stato superato nel build ID build, file

nome file, riga numero riga.

Spiegazione: Il limite per la costante XML Extender

indicata è stato superato nella posizione del codice

specificata da build, file e numero riga.

Risposta dell’utente: Verificare se l’applicazione ha

superato uno dei valori della tabella dei limiti nel

manuale IBM DB2 XML Extender Administration and

Programming Guide. Se il limite non è stato superato,

contattare l’assistenza tecnica. Quando l’errore viene

notificato, includere tutti i messaggi di output, il file di

traccia e la spiegazione su come riprodurre l’errore, ad

esempio DAD di input, documenti XML e definizioni

di tabella.

DXXM001W Si è verificato un errore del database

DB2.

Spiegazione: DB2 ha rilevato l’errore specificato.

Risposta dell’utente: Per ulteriori informazioni,

consultare i messaggi di riferimento e la

documentazione relativa ai codici e ai messaggi DB2

per il proprio sistema operativo.

DXXQ000E <Elemento> non presente nel file DAD.

Spiegazione: Un elemento obbligatorio non è presente

nel file DAD (document access definition).

Risposta dell’utente: Aggiungere l’elemento mancante

al file DAD.

DXXQ001E Istruzione SQL non valida per la

creazione di XML.

Spiegazione: L’istruzione SQL nel DAD (document

access definition) o l’istruzione che viene sostituita non

è valida. È necessaria un’istruzione SELECT per la

creazione di documenti XML.

278 XML Extender - Amministrazione e programmazione

Page 289: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Risposta dell’utente: Correggere l’istruzione SQL.

DXXQ002E Impossibile generare lo spazio di

memoria per conservare i documenti

XML.

Spiegazione: La memoria o lo spazio su disco del

sistema si sta esaurendo. Non è disponibile spazio

sufficiente per contenere i documenti XML ottenuti.

Risposta dell’utente: Limitare il numero di documenti

da generare. Ridurre la dimensione di ciascun

documento eliminando i nodi di elemento o attributo

non necessari dal file DAD.

DXXQ003W Il risultato supera il limite massimo.

Spiegazione: L’interrogazione SQL definita dall’utente

genera un numero di documenti superiore al numero

massimo specificato. Viene restituito solo il numero di

documenti specificato.

Risposta dell’utente: Non è richiesta alcuna azione. Se

sono necessari tutti i documenti, specificare zero come

numero massimo di documenti.

DXXQ004E La colonna <nome colonna> non è

compresa nei risultati

dell’interrogazione.

Spiegazione: La colonna specificata non è una delle

colonne comprese nei risultati dell’interrogazione SQL.

Risposta dell’utente: Modificare il nome colonna

specificato nel file DAD in una delle colonne comprese

nei risultati dell’interrogazione SQL. Altrimenti,

modificare l’interrogazione SQL in modo da includere

la colonna specificata nei risultati.

DXXQ005E Associazione relazionale errata.

L’elemento <nome elemento> si trova ad

un livello più basso della relativa

colonna secondaria <nome colonna>.

Spiegazione: L’associazione dell’interrogazione SQL a

XML è errata.

Risposta dell’utente: Accertarsi che le colonne

comprese nei risultati dell’interrogazione SQL siano

disposte in un ordine decrescente nella gerarchia di

riferimento. Inoltre, verificare che vi sia una chiave

candidata a singola colonna per ogni livello. Se questa

chiave non è disponibile in una tabella, l’interrogazione

ne deve generare una per la tabella che utilizza

un’espressione e la funzione integrata DB2

generate_unique().

DXXQ006E Un elemento attribute_node non ha

nome.

Spiegazione: L’elemento attribute_node nel file DAD

(document access definition) non presenta un attributo

nome.

Risposta dell’utente: Accertarsi che per ogni

attribute_node sia stato specificato un nome nel file

DAD.

DXXQ007E Attribute_node <nome attributo> non

presenta elementi colonna o RDB_node.

Spiegazione: L’elemento attribute_node nel file DAD

(document access definition) non presenta un elemento

colonna o un RDB_node.

Risposta dell’utente: Accertarsi che per ogni

attribute_node sia stato specificato un elemento colonna

o RDB_node nel file DAD.

DXXQ008E Un elemento text_node non presenta

elementi colonna.

Spiegazione: L’elemento text_node nel file DAD

(document access definition) non presenta un elemento

colonna.

Risposta dell’utente: Accertarsi che per ogni

text_node sia stato specificato un elemento colonna nel

file DAD.

DXXQ009E La tabella dei risultati <nome tabella>

non esiste.

Spiegazione: Impossibile trovare la tabella dei risultati

specificata nel catalogo di sistema.

Risposta dell’utente: Creare una tabella dei risultati

prima di richiamare la procedura memorizzata.

DXXQ010E RDB_node di <nome nodo> non presenta

una tabella nel file DAD.

Spiegazione: E’ necessario che RDB_node di

attribute_node o di text_node presenti una tabella.

Risposta dell’utente: Specificare la tabella di

RDB_node per attribute_node o text_node nel file DAD.

DXXQ011E L’elemento RDB_node di <nome nodo>

non presenta una colonna nel file DAD.

Spiegazione: È necessario che RDB_node di

attribute_node o di text_node presenti una colonna.

Risposta dell’utente: Specificare la colonna di

RDB_node per attribute_node o text_node nel file DAD.

DXXQ012E Errori nella DAD.

Spiegazione: XML Extender non è riuscito a trovare

l’elemento previsto durante l’elaborazione della DAD.

Risposta dell’utente: Controllare che DAD sia un

documento XML valido e che contenga tutti gli

elementi richiesti dalla DTD DAD. Consultare la

Capitolo 14. Risoluzione dei problemi 279

Page 290: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

documentazione XML Extender per la DTD DAD.

DXXQ013E L’elemento colonna o tabella non

presenta alcun nome nel file DAD.

Spiegazione: La tabella o la colonna dell’elemento

deve presentare un nome nel file DAD (document

access definition).

Risposta dell’utente: Specificare il nome dell’elemento

tabella o colonna nel file DAD.

DXXQ014E Un elemento element_node non ha

nome.

Spiegazione: Un elemento element_node nel file DAD

(document access definition) non presenta un attributo

nome.

Risposta dell’utente: Accertarsi che per ogni elemento

element_node sia stato specificato un nome nel file

DAD.

DXXQ015E Il formato della condizione non è

valido.

Spiegazione: La condizione dell’elemento condizione

nel file DAD (document access definition) presenta un

formato non corretto.

Risposta dell’utente: Accertarsi che il formato della

condizione sia valido.

DXXQ016E Il nome tabella in questo RDB_node

non è definito nell’elemento iniziale del

file DAD.

Spiegazione: È necessario definire tutte le tabelle nel

RDB_node dell’elemento iniziale del file DAD

(document access definition). Le tabelle dell’elemento

secondario devono corrispondere alle tabelle definite

nell’elemento iniziale. Il nome tabella in questo

RDB_node non è ubicato nell’elemento iniziale.

Risposta dell’utente: Accertarsi che la tabella del

nodo RDB venga definita nell’elemento iniziale del file

DAD.

DXXQ017E La colonna nella tabella dei risultati

<nome tabella> è troppo piccola.

Spiegazione: Il documento XML generato da XML

Extender è troppo grande per rientrare nella colonna

della tabella dei risultati.

Risposta dell’utente: Cancellare la tabella dei risultati.

Creare un’altra tabella dei risultati con una colonna più

grande. Rieseguire la procedura memorizzata.

DXXQ018E La clausola ORDER BY non è presente

nell’istruzione SQL.

Spiegazione: Manca la clausola ORDER BY

nell’istruzione SQL in un file DAD (document access

definition) che associa SQL a XML.

Risposta dell’utente: Modificare il file DAD.

Aggiungere una clausola ORDER BY che contenga le

colonne di identificazione entità.

DXXQ019E L’elemento objids non presenta alcun

elemento colonna nel file DAD.

Spiegazione: L’elemento objids non presenta alcun

elemento colonna nel file DAD (document access

definition) che associ SQL a XML.

Risposta dell’utente: Modificare il file DAD.

Aggiungere le colonne chiave come elementi secondari

dell’elemento objids.

DXXQ020I XML è stato generato con esito positivo.

Spiegazione: I documenti XML richiesti sono stati

generati correttamente dal database.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXQ021E La tabella <nome tabella> non contiene la

colonna <nome colonna.

Spiegazione: La tabella non contiene la colonna

specificata nel database.

Risposta dell’utente: Specificare un altro nome

colonna nel file DAD o aggiungere la colonna

specificata nel database della tabella.

DXXQ022E La colonna <nome_colonna> di

<nome_tabella> deve avere il tipo

<nome_tipo>.

Spiegazione: Il tipo di colonna non è valido.

Risposta dell’utente: Correggere il tipo di colonna

nella DAD.

DXXQ023E La colonna <nome colonna> di <nome

tabella> non può superare la lunghezza

<lunghezza>.

Spiegazione: La lunghezza definita per la colonna

nella DAD supera il limite consentito.

Risposta dell’utente: Correggere la lunghezza della

colonna nella DAD.

280 XML Extender - Amministrazione e programmazione

Page 291: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

DXXQ024E Impossibile creare la tabella <nome

tabella>.

Spiegazione: La tabella specificata non può essere

creata.

Risposta dell’utente: Accertarsi che l’ID utente che sta

creando la tabella disponga dell’autorizzazione

appropriata.

DXXQ025I Scomposizione XML eseguita

correttamente.

Spiegazione: Un documento XML è stato scomposto e

memorizzato in una raccolta con esito positivo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXQ026E I dati XML <nome xml> superano la

dimensione della colonna <nome

colonna>.

Spiegazione: La dimensione dei dati del documento

XML è maggiore di quella della colonna specificata.

Risposta dell’utente: Aumentare la lunghezza della

colonna utilizzando l’istruzione ALTER TABLE oppure

ridurre la dimensione dei dati editando il documento

XML.

DXXQ028E Impossibile trovare la raccolta <nome

raccolta> nella tabella XML_USAGE.

Spiegazione: Non è possibile trovare un record per la

raccolta nella tabella XML_USAGE.

Risposta dell’utente: Verificare che la raccolta sia stata

abilitata.

DXXQ029E Impossibile trovare il DAD nella tabella

XML_USAGE per la raccolta <nome

raccolta>.

Spiegazione: Non è possibile trovare un record DAD

per la raccolta nella tabella XML_USAGE.

Risposta dell’utente: Verificare che la raccolta sia stata

abilitata correttamente.

DXXQ030E Sintassi del valore XML_override errata.

Spiegazione: Il valore XML_override non è stato

specificato correttamente nella procedura memorizzata.

Risposta dell’utente: Accertarsi che la sintassi del

valore XML_override sia corretta.

DXXQ031E Il nome tabella non può superare la

lunghezza massima consentita dal DB2.

Spiegazione: Il nome tabella specificato dall’elemento

di condizione nella DAD è troppo lungo.

Risposta dell’utente: Modificare la lunghezza del

nome tabella nella DAD.

DXXQ032E Il nome colonna non può superare la

lunghezza massima consentita dal DB2.

Spiegazione: Il nome colonna specificato

dall’elemento di condizione nella DAD è troppo lungo.

Risposta dell’utente: Modificare la lunghezza del

nome colonna nella DAD.

DXXQ033E Identificativo <identificativo> non valido.

Spiegazione: La stringa non è un identificativo SQL

DB2 valido.

Risposta dell’utente: Correggere la stringa nel DAD

per renderla conforme alle regole definite per

l’identificativo SQL DB2.

DXXQ034E Condizione di unione nel RDB_node

iniziale della DAD non valida:

<condizione>

Spiegazione: L’elemento di condizione deve essere

una clausola WHERE valida costituita da condizioni di

unione valide collegate dalla congiunzione AND.

Risposta dell’utente: Per informazioni sulla sintassi

corretta delle condizioni di unione in una DAD,

consultare la documentazione XML Extender.

DXXQ035E Condizione di unione nel RDB_node

iniziale del DAD non valida:

<condizione>

Spiegazione: I nomi colonna nell’elemento di

condizione di RDB_node devono essere definiti con i

nomi tabella se DAD specifica più tabelle.

Risposta dell’utente: Per informazioni sulla sintassi

corretta delle condizioni di unione in una DAD,

consultare la documentazione XML Extender.

DXXQ036E Nome di schema specificato in una tag

della condizione DAD di lunghezza

maggiore di quella consentita.

Spiegazione: È stato rilevato un errore durante

l’analisi del testo in una tag della condizione interna al

file DAD. Il testo della condizione contiene un ID

specificato da un nome di schema troppo lungo.

Risposta dell’utente: Correggere il testo delle tag della

condizione nella DAD (document access definition).

DXXQ037E Impossibile generare <elemento> con

ricorrenze multiple.

Spiegazione: Il nodo dell’elemento e i relativi elementi

secondari non presentano alcuna associazione al

Capitolo 14. Risoluzione dei problemi 281

Page 292: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

database, ma il relativo valore multi_occurrence

corrisponde a YES.

Risposta dell’utente: Correggere il DAD impostando

il valore multi_occurrence su NO oppure creare un

RDB_node in uno dei relativi elementi secondari.

DXXQ038E L’istruzione SQL è troppo lunga:

istruzione SQL.

Spiegazione: L’istruzione SQL specificata

nell’elemento <SQL_stmt> del DAD supera il numero

di byte consentito.

Risposta dell’utente: Ridurre la lunghezza

dell’istruzione SQL ad un valore minore o uguale a

32765 byte per Windows e UNIX, oppure 16380 byte

per OS/390 e iSeries.

DXXQ039E Sono state specificate troppe colonne

per una tabella nel file DAD.

Spiegazione: Un file DAD utilizzato per

scomposizione o composizione RDB può avere al

massimo 100 elementi text_node e attribute_node che

specificano le singole colonne nella stessa tabella.

Risposta dell’utente: Ridurre ad un massimo di 100 il

numero totale di elementi text_node e attribute_node

che fanno riferimento a singole colonne nella stessa

tabella.

DXXQ040E Il nome elemento <nome elemento> nel

file DAD non è valido.

Spiegazione: Il nome elemento specificato nel file

DAD non è corretto.

Risposta dell’utente: Accertarsi che il nome elemento

sia specificato correttamente nel file DAD. Fare

riferimento al DTD per il file DAD.

DXXQ041W Il documento XML è stato generato. Uno

o più percorsi di sostituzione specificati

non sono validi e vengono ignorati.

Spiegazione: Specificare soltanto un percorso di

sovrascrittura.

Risposta dell’utente: Accertarsi che il nome elemento

sia specificato correttamente nel file DAD. Fare

riferimento al DTD per il file DAD.

DXXQ043E Attributo <nome attributo> non trovato

dopo l’elemento <nome elemento>.

Spiegazione: L’attributo <nome attributo> non è

presente nell’elemento <nome elemento> o in uno dei

suoi elementi secondari.

Risposta dell’utente: Accertarsi che l’attributo sia

presente nel documento XML dove indicato nel DAD.

DXXQ044E L’elemento <nome elemento> non

presenta un elemento precedente

<elemento precedente>.

Spiegazione: In base al DAD, <elemento precednete> è

un elemento di livello superiore di <nome_elem>. Nel

documento XML, uno o più elementi <nome elemento>

non presentano tale elemento al livello superiore.

Risposta dell’utente: Accertarsi che la nidificazione

degli elementi nel documento XML rispetti le specifiche

del DAD corrispondente.

DXXQ045E L’albero secondario sotto l’elemento

<nome elemento> contiene più attributi

con nome <nome attributo>.

Spiegazione: Un albero secondario sotto <nome

elemento> nel documento XML contiene più istanze

dell’attributo <nome attributo>, che, in base alla DAD,

deve essere scomposto nella stessa riga. Gli elementi e

gli attributi da scomporre devono avere nomi univoci.

Risposta dell’utente: Accertarsi che l’elemento o

l’attributo nell’albero secondario abbiano nomi univoci.

DXXQ046W DTD ID non è stato trovato nella DAD.

Spiegazione: Nella DAD, VALIDATION è YES ma

l’elemento DTDID non è stato specificato. Non viene

eseguito alcun controllo di validazione.

Risposta dell’utente: Non è richiesta alcuna azione. Se

occorre eseguire la validazione, specificare l’elemento

DTDID nel file DAD.

DXXQ047E Errore nel programma di analisi

sintattica alla riga <mv> numero

riga</mv> colonna numero colonna:

messaggio

Spiegazione: Il programma di analisi sintattica non

può proseguire a causa dell’errore riportato.

Risposta dell’utente: Correggere l’errore nel

documento; se necessario consultare le specifiche XML.

DXXQ048E Errore interno - vedere il file di traccia.

Spiegazione: Il processore del foglio di stile ha

rilevato un errore interno. Il documento XML oppure il

foglio di stile potrebbero non essere validi.

Risposta dell’utente: Accertarsi che il documento

XML e il foglio di stile siano validi.

DXXQ049E Il file di output esiste già.

Spiegazione: Il file di output specificato esiste già

nella directory.

Risposta dell’utente: Modificare il percorso di output

o il nome file per il documento in modo che sia

282 XML Extender - Amministrazione e programmazione

Page 293: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

univoco, oppure eliminare il file esistente.

DXXQ050E Impossibile creare un nome file

univoco.

Spiegazione: La UDF non è riuscita a creare un nome

file univoco per il documento di output nella directory

specificata in quanto non dispone dell’accesso richiesto,

i nomi file da generare sono in uso oppure la directory

non esiste.

Risposta dell’utente: Accertarsi che la UDF abbia

accesso alla directory specificata, utilizzare una

directory con nomi file disponibili.

DXXQ051E Nessun dato di input o di output.

Spiegazione: Uno o più parametri di input o di

output non presentano valori validi.

Risposta dell’utente: Verificare l’istruzione per

controllare se mancano parametri obbligatori.

DXXQ052E Si è verificato un errore durante

l’accesso alla tabella

DB2XML.XML_USAGE.

Spiegazione: Il database non è stato abilitato oppure

la tabella DB2XML.XML_USAGE è stata cancellata.

Risposta dell’utente: Accertarsi che il database sia

stato abilitato e la tabella DB2XML.XML_USAGE sia

accessibile.

DXXQ053E Un’istruzione SQL non è riuscita:

messaggio

Spiegazione: L’esecuzione di un’istruzione SQL

generata nell’elaborazione di XML Extender non è

riuscita.

Risposta dell’utente: Esaminare la traccia per ulteriori

dettagli. Se l’errore persiste, contattare l’assistenza

tecnica. Quando l’errore viene notificato, includere tutti

i messaggi, il file di traccia e la spiegazione su come

riprodurre l’errore.

DXXQ054E Parametro di input non valido: parametro

Spiegazione: Il parametro di input specificato per una

procedura memorizzata o una UDF non è valido.

Risposta dell’utente: Verificare la firma della

procedura memorizzata o della UDF ed accertarsi che il

parametro di input sia corretto.

DXXQ055E Errore ICU: errore

Spiegazione: Si è verificato un errore ICU durante

un’operazione di conversione.

Risposta dell’utente: Segnalare l’errore all’assistenza

clienti. Includere il file di traccia, il messaggio di errore

e le istruzioni per riprodurre l’errore.

DXXQ056E L’elemento o attributo nome xml non può

essere associato alla colonna indicata

come parte della chiave esterna (colonna

colonna nella tabella tabella).

Spiegazione: L’elemento o attributo specificato non

può essere associato ad una colonna che è indicata

come parte di una chiave esterna. I valori dei dati per

le chiavi esterne sono determinati dalle chiavi primarie;

l’elemento/attributo specificato nel documento XML

non deve essere necessariamente associato ad una

tabella e colonna.

Risposta dell’utente: Eliminare l’associazione

RDB_node per la colonna e tabella specificate nel DAD.

DXXQ057E Le tag schemabindings e dtdid non

possono essere entrambe presenti nel

file DAD.

Spiegazione: Le tag schemabindings e dtdid non

possono essere entrambe presenti nel file DAD.

Risposta dell’utente: Verificare che nel file DAD sia

presente solo una tra le tag schemabindings e dtdid.

DXXQ058E Nel file DAD manca la tag

nonamespacelocation all’interno della

tag schemabindings.

Spiegazione: Nel file DAD manca la tag

nonamespacelocation all’interno della tag

schemabindings.

Risposta dell’utente: Aggiungere la tag

nonamespacelocation alla tag schemabindings.

DXXQ059E La tag doctype non può essere presente

all’interno della tag XCollection nel

DAD di validazione schema.

Spiegazione: La tag doctype non può essere presente

all’interno della tag XCollection nel DAD di

validazione schema.

Risposta dell’utente: Eliminare la tag doctype

all’interno della tag XCollection per la validazione

schema.

DXXQ060E Impossibile trovare SCHEMA ID id

schema.

Spiegazione: XML Extender non è riuscito a trovare

SCHEMA ID durante l’abilitazione della colonna.

SCHEMA ID corrisponde al valore dell’attributo di

ubicazione della tag nonamespacelocation interna alla

tag schemabindings nel file DAD.

Risposta dell’utente: Accertarsi che sia specificato il

valore corretto per SCHEMA ID nel file DAD.

Capitolo 14. Risoluzione dei problemi 283

Page 294: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

DXXQ061E Il formato della stringa non è valido.

Spiegazione: Il formato della rappresentazione in

stringa non è valido. Se la stringa è un valore data, ora

o data/ora, la sintassi non è conforme al tipo di dati.

Risposta dell’utente: Verificare che il formato del

valore data, ora o data/ora sia conforme al formato del

tipo di dati relativo.

DXXQ062E Non sono presenti altre righe della serie

di risultati di table per la creazione di un

valore XML per element.

Spiegazione: Questa condizione di errore è

solitamente causata da una specifica multi_occurrence =

YES mancante per l’elemento element_node principale

dell’elemento o attributo specificato.

Risposta dell’utente: Verificare nel DAD che il valore

multi_occurrence per l’elemento element_node

principale corrisponda alla molteplicità degli elementi

element_nodes secondari.

DXXQ063E L’attributo multi_occurrence su

elementname nel file DAD non è valido.

Spiegazione: Il valore dell’attributo multi_occurrence

sull’elemento element_node specificato nel file DAD

(document access definition) manca o non è corretto. Il

valore deve essere ’yes’ o ’no’, non sensibile al

maiuscolo/minuscolo.

Risposta dell’utente: Accertarsi che l’attributo

multi_occurrence sia specificato correttamente nel file

DAD.

DXXQ064E Colonna colonna non trovata nella

tabella esterna tabella.

Spiegazione: Una colonna delle chiavi specificata nella

condizione join non era associata ad alcun nodo di

elementi o attributi.

Risposta dell’utente: Verificare che la condizione join

specificata nel file DAD sia corretta e che tutte le

colonne delle chiavi siano associate a un nodo di

elementi o di attributi.

DXXQ065I Tutti i trigger relativi alle colonne

abilitate per XML sono state

correttamente generate.

Spiegazione: Si tratta di un messaggio informativo.

Risposta dell’utente: Non è richiesta alcuna azione.

DXXQ066E La chiave primaria per la tabella nome

tabella non esiste.

Spiegazione: XML Extender non ha determinato la

chiave primaria per la tabella nome tabella. Verificare che

la chiave primaria per la tabella non sia stata eliminata

una volta abilitata la colonna per XML.

Risposta dell’utente: Modificare la tabella in modo da

aggiungere la chiave primaria specificata come ID

ROOT ID quando la colonna è stata abilitata per XML.

DXXQ067E Tentativo di esecuzione di azione non

riuscito.

Spiegazione: Durante il tentativo di esecuzione di

azione, si è verificato un errore SQL.

Risposta dell’utente: Contattare l’assistenza tecnica.

Quando si riporta l’errore, verificare di includere il file

di traccia di XML Extender.

DXXQ068E Impossibile impostare SQLID corrente

su [userid]. SQLCODE = [sqlcode].

Spiegazione: Durante il tentativo di impostazione

dell’sqlid corrente su un ID di autorizzazione

secondario, si è verificato un errore SQL.

Risposta dell’utente: Verificare di aver specificato un

ID di autorizzazione secondaria valido che che si

disponga delle autorizzazioni corrette per tale ID.

DXXQ069E Impossibile trovare l’elemento o

l’attributo nome elemento xml associato

alla tabella nome tabella come chiave

esterna per la tabella nome tabella2.

Spiegazione: L’associazione, comprendente l’utilizzo

di multi-occurrence, come specificata dal file DAD non

consente l’utilizzo del valore nome elemento xml per

inserire il valore di una chiave esterna nome tabella2.

Risposta dell’utente: Verificare la condizione join che

interessa le due tabelle, il valore dell’attributo

multi_occurrence dell’elemento di livello superiore

associato a nome tabella e il relativo wrapper, la

presenza di altri elementi che siano elementi secondari

di un elemento principale di nome elemento xml in una

tabella diversa da nome tabella.

DXXQ070E Impossibile aprire il file di traccia file

traccia per l’output.

Spiegazione: Apertura del file di traccia non riuscita.

Risposta dell’utente: Verificare che il processo che

scrive il file di traccia abbia le autorizzazioni di

scrittura su un file system di lettura/scrittura.

DXXQ071E Il numero di colonne LOB associate

consentito per la composizione supera il

valore massimo limite lob.

Spiegazione: Il numero di colonne LOB associate

specificato in un file DAD di composizione supera il

valore massimo consentito. Ridurre il numero di

colonne LOB.

284 XML Extender - Amministrazione e programmazione

Page 295: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Risposta dell’utente: Verificare se le colonne LOB

specificate nel file DAD abbiano superato il numero

massimo. Se il limite non è stato superato, contattare

l’assistenza clienti. Quando l’errore viene notificato,

includere tutti i messaggi di output, il file di traccia e la

spiegazione su come riprodurre l’errore, ad esempio

DAD di input e definizioni di tabella.

DXXQ072E XML Extender per iSeries richiede XML

Toolkit for iSeries (prodid) con

l’installazione dell’opzione parseropt.

Spiegazione: XML Extender utilizza XML Parser

distribuito con XML Toolkit per iSeries.

Risposta dell’utente: Installare XML Toolkit per

iSeries con l’opzione richiesta.

DXXQ073E Il database non è abilitato.

Spiegazione: Il comando di gestione dxxadm è stato

eseguito su un database non abilitato.

Risposta dell’utente: Abilitare il database per XML

Extender prima di eseguire il comando di gestione di

XML Extender. La disabilitazione di un database che

non è stato abilitato per XML restituirà lo stesso errore.

Capitolo 14. Risoluzione dei problemi 285

Page 296: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

286 XML Extender - Amministrazione e programmazione

Page 297: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Appendice A. Esempi

Questa appendice mostra gli oggetti di esempio utilizzati con gli esempi in questo

manuale.

v “Esempio DTD XML”

v “Esempio di documento XML: getstart.xml”

v “File DAD (document access definition)” a pagina 289

– “File DAD di esempio: colonna XML” a pagina 290

– “File DAD di esempio: raccolta XML, associazione SQL” a pagina 290

– “File DAD di esempio: associazione RDB_node” a pagina 292

Esempio DTD XML

Il seguente DTD viene utilizzato per il documento getstart.xml a cui si fa

riferimento in questo manuale.

Esempio di documento XML: getstart.xml

Il seguente documento XML, getstart.xml, è il documento XML che viene

utilizzato negli esempi in questo manuale. Esso contiene le tag XML che formano

un ordine di acquisto.

<!xml encoding="US-ASCII"?>

<!ELEMENT Order (Customer, Part+)>

<!ATTLIST Order key CDATA #REQUIRED>

<!ELEMENT Customer (Name, Email)>

<!ELEMENT Name (#PCDATA)>

<!ELEMENT Email (#PCDATA)>

<!ELEMENT Part (key, Quantity, ExtendedPrice, Tax, Shipment+)>

<!ELEMENT key (#PCDATA)>

<!ELEMENT Quantity (#PCDATA)>

<!ELEMENT ExtendedPrice (#PCDATA)>

<!ELEMENT Tax (#PCDATA)>

<!ATTLIST Part color CDATA #REQUIRED>

<!ELEMENT Shipment (ShipDate, ShipMode)>

<!ELEMENT ShipDate (#PCDATA)>

<!ELEMENT ShipMode (#PCDATA)>

Figura 14. DTD XML di esempio: getstart.dtd

© Copyright IBM Corp. 1999 - 2006 287

Page 298: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Esempio di foglio di stile: getstart.xsl

Il seguente foglio di stile XML, getstart.xsl, è il foglio di stile incluso nella

directory samples di DB2.

<?xml version="1.0"?>

<!DOCTYPE Order SYSTEM "install_dxx/samples/extenders/db2xml/dtd/getstart.dtd">

<Order key="1">

<Customer>

<Name>American Motors</Name>

<Email>[email protected]</Email>

</Customer>

<Part color="black ">

<key>68</key>

<Quantity>36</Quantity>

<ExtendedPrice>34850.16</ExtendedPrice>

<Tax>6.000000e-02</Tax>

<Shipment>

<ShipDate>1998-08-19</ShipDate>

<ShipMode>BOAT </ShipMode>

</Shipment>

<Shipment>

<ShipDate>1998-08-19</ShipDate>

<ShipMode>AIR </ShipMode>

</Shipment>

</Part>

<Part color="red ">

<key>128</key>

<Quantity>28</Quantity>

<ExtendedPrice>38000.00</ExtendedPrice>

<Tax>7.000000e-02</Tax>

<Shipment>

<ShipDate>1998-12-30</ShipDate>

<ShipMode>TRUCK </ShipMode>

</Shipment>

</Part>

</Order>

Figura 15. Documento XML di esempio: getstart.xml

288 XML Extender - Amministrazione e programmazione

Page 299: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

File DAD (document access definition)

Le seguenti sezioni contengono i file DAD (document access definition) che

associano i dati XML alle tabelle relazionali dei database DB2, utilizzando le

modalità di accesso alle colonne o alle raccolte XML.

v “File DAD di esempio: colonna XML” a pagina 290

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<html>

<head/>

<body>

<ol style="list-style:decimal outside">

<xsl:for-each select="Order">

<li><b>Orderkey : </b> <xsl:value-of select="@key"/><br/>

<xsl:for-each select="Customer">

<b>Customer</b><br/>

<xsl:for-each select="Name | Email">

<xsl:value-of select="name()"/><xsl:text> : </xsl:text><xsl:value-of select="."/>

<xsl:text>, </xsl:text>

</xsl:for-each>

</xsl:for-each>

<br/><br/>

<ol type="A">

<xsl:for-each select="Part">

<li><b>Parts</b><br/>

Color : <xsl:value-of select="@color"/><xsl:text>, </xsl:text>

<xsl:for-each select="key | Quantity | ExtendedPrice | Tax">

<xsl:value-of select="name()"/><xsl:text> : </xsl:text><xsl:value-of select="."/>

<xsl:text>, </xsl:text>

</xsl:for-each>

<br/><br/>

<ol type="a">

<xsl:for-each select="Shipment">

<li><b>Shipment</b><br/>

<xsl:for-each select="ShipDate | ShipMode">

<xsl:value-of select="name()"/><xsl:text> : </xsl:text><xsl:value-of select="."/>

<xsl:text>, </xsl:text>

</xsl:for-each>

</li>

</xsl:for-each>

</ol>

<br/>

</li>

</xsl:for-each>

</ol>

</li>

</xsl:for-each>

</ol>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Figura 16. Foglio di stile di esempio: getstart.xsl

Appendice A. Esempi 289

Page 300: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v “File DAD di esempio: raccolta XML, associazione SQL” mostra un file DAD per

una raccolta XML mediante un’associazione SQL.

v “File DAD di esempio: associazione RDB_node” a pagina 292 mostra un file

DAD per una raccolta XML che utilizza l’associazione RDB_node.

File DAD di esempio: colonna XML

Questo file DAD contiene l’associazione per una colonna XML e definisce la

tabella, le tabelle laterali e le colonne che devono contenere i dati XML.

File DAD di esempio: raccolta XML, associazione SQL

Questo file DAD contiene una istruzione SQL che specifica le tabelle del database

DB2, le colonne e le condizioni che devono contenere i dati XML.

<?xml version="1.0"?>

<!DOCTYPE Order SYSTEM "install_dxx/samples/extenders/db2xml/dtd/dad.dtd">

<DAD>

<dtdid> "install_dxx/samples/extenders/db2xml/dtd/getstart.dtd"

</dtdid>

<validation>YES</validation>

<Xcolumn>

<table name="order_side_tab">

<column name="order_key"

type="integer"

path="/Order/@Key"

multi_occurrence="NO"/>

<column name="customer"

type="varchar(50)"

path="/Order/Customer/Name"

multi_occurrence="NO"/>

</table>

<table name="part_side_tab">

<column name="price"

type="decimal(10,2)"

path="/Order/Part/ExtendedPrice"

multi_occurrence="YES"/>

</table>

<table name="ship_side_tab">

<column name="date"

type="DATE"

path="/Order/Part/Shipment/ShipDate"

multi_occurrence="YES"/>

</table>

</Xcolumn>

</DAD>

Figura 17. File DAD di esempio per una colonna XML: getstart_xcolumn.dad

290 XML Extender - Amministrazione e programmazione

Page 301: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "install_dxx/samples/extenders/db2xml/dtd/dad.dtd">

<DAD>

<validation>NO</validation>

<Xcollection>

<SQL_stmt>SELECT o.order_key, customer_name, customer_email, p.part_key, color,

quantity, price, tax, ship_id, date, mode from order_tab o, part_tab p,

table(select substr(char(timestamp(generate_unique())),16)

as ship_id, date, mode, part_key from ship_tab) s

p.price > 20000 and

p.order_key = o.order_key and

s.part_key = p.part_key

ORDER BY order_key, part_key, ship_id</SQL_stmt>

<prolog>?xml version="1.0"?</prolog>

<doctype>!DOCTYPE Order SYSTEM

"install_dxx/samples/extenders/db2xml/dtd/getstart.dtd

"</doctype>

Figura 18. File DAD di esempio per una raccolta XML che utilizza l’associazione SQL

order_sql.dad (Parte 1 di 2)

Appendice A. Esempi 291

Page 302: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

File DAD di esempio: associazione RDB_node

Questo file DAD utilizza gli elementi <RDB_node> per definire le tabelle del

database DB2, le colonne e le condizioni che devono contenere i dati XML.

<?xml version="1.0"?>

<!DOCTYPE DAD SYSTEM "SQLLIB/samples/extenders/db2xml/dtd/dad.dtd">

<DAD>

<dtdid>E:\dtd\lineItem.dtd</dtdid>

<validation>YES</validation>

<Xcollection>

<prolog>?xml version="1.0"?</prolog>

<doctype>!DOCTYPE Order SYSTEM

"SQLLIB/samples/extenders/db2xml/dtd/getstart.dtd"</doctype>

<root_node>

<element_node name="Order">

<RDB_node>

<table name="order_tab"/>

<table name="part_tab"/>

<root_node>

<element_node name="Order">

<attribute_node name="key">

<column name="order_key"/>

</attribute_node>

<element_node name="Customer">

<element_node name="Name">

<text_node><column name="customer_name"/></text_node>

</element_node>

<element_node name="Email">

<text_node><column name="customer_email"/></text_node>

</element_node>

</element_node>

<element_node name="Part">

<attribute_node name="color">

<column name="color"/>

</attribute_node>

<element_node name="key">

<text_node><column name="part_key"/></text_node>

</element_node>

<element_node name="Quantity">

<text_node><column name="quantity"/></text_node>

</element_node>

<element_node name="ExtendedPrice">

<text_node><column name="price"/></text_node>

</element_node>

<element_node name="Tax">

<text_node><column name="tax"/></text_node>

</element_node>

<element_node name="Shipment" multi_occurrence="YES">

<element_node name="ShipDate">

<text_node><column name="date"/></text_node>

</element_node>

<element_node name="ShipMode">

<text_node><column name="mode"/></text_node>

</element_node>

</element_node>

</element_node>

</element_node>

</root_node>

</Xcollection>

</DAD>

Figura 18. File DAD di esempio per una raccolta XML che utilizza l’associazione SQL

order_sql.dad (Parte 2 di 2)

292 XML Extender - Amministrazione e programmazione

Page 303: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<table name="ship_tab"/>

<condition>order_tab.order_key=part_tab.order_key AND

part_tab.part_key=ship_tab.part_key </condition>

</RDB_node>

<attribute_node name="Key">

<RDB_node>

<table name="order_tab"/>

<column name="order_key"/>

</RDB_node>

</attribute_node>

<element_node name="Customer">

<element_node name="Name">

<text_node>

<RDB_node>

<table name="order_tab"/>

<column name="customer_name"/>

</RDB_node>

</text_node>

</element_node>

<element_node name="Email">

<text_node>

<RDB_node>

<table name="order_tab"/>

<column name="customer_email"/>

</RDB_node>

</text_node>

</element_node>

</element_node>

<element_node name="Part">

<attribute_node name="Key">

<RDB_node>

<table name="part_tab"/>

<column name="part_key"/>

</RDB_node>

</attribute_node>

<element_node name="ExtendedPrice">

<text_node>

<RDB_node>

<table name="part_tab"/>

<column name="price"/>

<condition>price > 2500.00</condition>

</RDB_node>

</text_node>

</element_node>

<element_node name="Tax">

<text_node>

<RDB_node>

<table name="part_tab"/>

<column name="tax"/>

</RDB_node>

</text_node>

</element_node>

<element_node name="Quantity">

<text_node>

<RDB_node>

<table name="part_tab"/>

<column name="qty"/>

</RDB_node>

</text_node>

</element_node>

<element_node name="Shipment" multi_occurrence="YES">

<element_node name="ShipDate">

<text_node>

<RDB_node>

<table name="ship_tab"/>

Appendice A. Esempi 293

Page 304: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

<column name="date"/>

<condition>date > ’1966-01-01’</condition>

</RDB_node>

</text_node>

</element_node>

<element_node name="ShipMode">

<text_node>

<RDB_node>

<table name="ship_tab"/>

<column name="mode"/>

</RDB_node>

</text_node>

</element_node>

<element_node name="Comment">

<text_node>

<RDB_node>

<table name="ship_tab"/>

<column name="comment"/>

</RDB_node>

</text_node>

</element_node>

</element_node> <!-- end of element Shipment-->

</element_node> <!-- end of element Part -->

</element_node> <!-- end of element Order -->

</root_node>

</Xcollection>

</DAD>

294 XML Extender - Amministrazione e programmazione

Page 305: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Appendice B. Considerazioni sulla codepage

I documenti XML e gli altri file correlati devono essere codificati correttamente per

ogni client o server che accede ai file. XML Extender fa delle considerazioni

quando elabora un file, pertanto è necessario comprendere il modo in cui gestisce

le conversioni di codepage. Le considerazioni primarie sono:

v Verificare che la codepage corrente del client che richiama un documento XML

dal database DB2 corrisponda alla codifica del documento.

v Verificare che quando il documento viene elaborato da un parser XML, la

dichiarazione di codifica del documento XML sia coerente con la codifica

corrente del documento.

Le sezioni seguenti descrivono i problemi legati a queste considerazioni, il modo in

cui prepararsi a possibili problemi e il modo in cui XML Extender e il database

DB2 supportano le codepage quando i documenti vengono inviati dal client al

server e poi al database.

Terminologia per le codepage XML

I seguenti termini sono utilizzati nelle sezioni relative alla codepage XML:

codifica documento

La codepage do un documento XML.

dichiarazione di codifica del documento

Il nome della codepage specificata nella dichiarazione XML. Ad esempio, la

seguente dichiarazione di codifica specifica ibm-1047:

<?xml version="1.0" encoding="ibm-1047"?>

documento coerente

Un documento in cui la codepage corrisponde alla dichiarazione di

codifica.

documento incoerente

Un documento in cui la codepage non corrisponde alla dichiarazione di

codifica.

Variabile di registro (di ambiente) DB2CODEPAGE

Specifica la codepage dei dati presentati a DB2 da un’applicazione client

del database. DB2 richiama la codepage del client dalla locale del sistema

operativo del client, a meno che questa variabile non sia impostata. Per

DB2, questo valore sovrascrive la locale del sistema operativo del client.

codepage client

La codepage dell’applicazione. Se è impostata la variabile DB2CODEPAGE,

la codepage del client è il valore di DB2CODEPAGE. In caso contrario, la

codepage del client è data dalla locale del sistema operativo del client.

codepage server o codepage della locale del sistema operativo del server

La locale del sistema operativo su cui è installato il database DB2.

codepage database

La codifica dei dati memorizzati determinata in fase di creazione del

database. Se non esplicitamente specificata con la clausola USING

CODESET, questo valore è la locale del sistema operativo del server.

© Copyright IBM Corp. 1999 - 2006 295

Page 306: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Considerazioni sulla codepage di DB2 e XML Extender

Quando DB2 invia o riceve un documento XML, non viene controllata la

dichiarazione di codifica. Piuttosto, viene controllata la codepage del client per

verificare che corrisponda alla codepage del database. Se sono differenti, DB2

converte i dati nel documento XML in modo che corrisponda alla codepage:

v del database, quando si importa il documento o un frammento del documento in

una tabella del database

v del database, quando si decompone un documento in una o più tabelle del

database

v del client, quando si esporta il documento dal database e si presenta al client

v del server, quando si elabora un file con una UDF che restituisce i dati in un file

sul file system del server.

Considerazioni per l’importazione di un documento XML

Quando un documento XML viene importato nel database, questo viene di solito

importato come documento XML da memorizzare in una colonna XML o per la

decomposizione in una raccolta XML, in cui il contenuto di elementi e attributi

viene salvato come dati DB2. Quando un documento viene importato, DB2

converte la codifica del documento in quella del database. DB2 assume che il

documento abbia la codepage specificata nella colonna “Codepage di origine” della

tabella riportata di seguito. Tabella 93 riporta le conversioni eseguite da DB2

durante l’importazione di un documento XML.

Tabella 93. Utilizzo di UDF e procedure memorizzate quando il file XML viene importato nel

database

Attività Codepage di

origine per la

conversione

Codepage di

destinazione

per la

conversione

Commenti

Inserimento di un file

DTD nella tabella

DTD_REF

Codepage del

client

Codepage del

database

Abilitazione di una

colonna o di una

raccolta mediante

procedure memorizzate

o mediante i comandi di

gestione che importano i

file DAD

Codepage del

client (la

codepage

utilizzata per

collegare

DXXADMIN

durante

l’installazione),

Codepage del

database

Mediante UDF:

v XMLVarchar

FromFile()

v XMLCLOB FromFile()

v Content(): richiama da

XMLFILE a un CLOB

Codepage del

server

Codepage del

database

La codepage del database viene

convertita nella codepage del

client quando i dati vengono

presentati al client

Utilizzo di procedure

memorizzate per la

decomposizione

Codepage del

client

Codepage del

database

v Si assume che il documento

da decomporre sia nella

codepage del client. I dati

provenienti dalla vengono

memorizzati nelle tabelle nella

codepage del database

296 XML Extender - Amministrazione e programmazione

Page 307: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Considerazioni per l’esportazione di un documento XML

Quando un documento XML viene esportato dal database, questo viene esportato

in base a una richiesta del client per presentare uno dei seguenti oggetti:

v Un documento XML da una colonna XML

v I risultati dell’interrogazione dei documenti XML in una colonna XML

v Un documento XML composto da una raccolta XML

Quando un documento viene esportato, DB2 converte la codifica del documento in

quella del client o del server, a seconda di dove è stata originata la richiesta e di

dove sono stati elaborati i dati. Tabella 94 riporta le conversioni eseguite da DB2

durante l’esportazione di un documento XML.

Tabella 94. Utilizzo di UDF e procedure memorizzate quando il file XML viene esportato dal

database

Attività DB2 converte... Commenti

Mediante UDF:

v XMLFileFromVarchar()

v XMLFileFromCLOB()

v Content(): retrieve da

XMLVARCHAR su un file

di server esterno

Dalla codepage del database

alla codepage del server

Utilizzo delle procedure

memorizzate per comporre e

memorizzare documenti XML

in una tabella di risultati da

cui possano essere interrogati

ed esportati.

Dalla codepage del database

alla codepage del client

quando la serie di risultati

viene presentata al client

v Quando si compongono

dei documenti, XML

Extender copia la

dichiarazione di codifica

specificata dalla tag nel file

DAD sul documento

appena creato. Tale codifica

deve corrispondere alla

codepage del client.

Considerazioni sulla dichiarazione di codifica per XML Extender

La dichiarazione di codifica specifica la codepage del documento XML e viene

visualizzata nell’istruzione di dichiarazione XML. Quando si utilizza XML

Extender, è importante verificare che la codifica del documento corrisponda a

quella del client o del server, a seconda di dove è ubicato il file.

Dichiarazioni di codifica valide

È possibile utilizzare qualsiasi dichiarazione di codifica in documenti XML,

seguendo qualche regola. In questa sezione, sono definite tali regole insieme alle

dichiarazioni di codifica supportate.

Le codifica consigliate per i dati XML sono UTF-8 e UTF-16, in base alla specifica

XML. Se si utilizzano queste codifiche, l’applicazione potrà essere utilizzata tra più

società.

Per tutti i sistemi operativi, sono supportate le seguenti codifiche. Nel seguente

elenco è riportato il significato di ogni colonna:

v Codifica specifica la stringa di codifica da utilizzare nelle dichiarazioni XML.

v Categoria mostra il sistema operativo su cui DB2 supporta la codepage

specificata.

Appendice B. Considerazioni sulla codepage 297

Page 308: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

v Codepage mostra la codepage definita da IBM associata alla codifica specificata.

Tabella 95. Dichiarazioni di codifica supportate da XML Extender (elenco parziale)

Categoria Codifica Codepage

Unicode UTF-8 1208

UTF-16 1200

ASCII iso-8859-1 819

ibm-1252 1252

iso-8859-2 912

iso-8859-5 915

iso-8859-6 1089

iso-8859-7 813

iso-8859-8 916

iso-8859-9 920

MBCS gb2312 1386

ibm-932, shift_jis78 932

Shift_JIS 943

IBM-eucCN 1383

ibm-1388 1388

IBM-eucJP, EUC-JP 954, 33722

ibm-930 930

ibm-939 939

ibm-1390 1390

ibm-1399 1399

ibm-5026 5026

ibm-5035 5035

euc-tw, IBM-eucTW 964

ibm-937 937

euc-kr, IBM-eucKR 970

big5 950

La stringa di codifica deve essere compatibile con la codepage della destinazione

del documento. Se un documento viene restituito da un server a un client, allora la

stringa di codifica deve essere compatibile con la codepage del client. Fare

riferimento a “Codifiche e dichiarazioni di codifica coerenti” per informazioni sulle

conseguenze di codifiche non compatibili.

Codifiche e dichiarazioni di codifica coerenti

Quando un documento XML viene elaborato o scambiato con un altro sistema, è

importante che la dichiarazione di codifica corrisponda alla codifica corrente del

documento. La verifica che la codifica di un documento sia coerente con quella del

client è importante poiché gli strumenti XML, come i parser, generano un errore

per una entità che include una dichiarazione di codifica differente da quella

riportata nella dichiarazione.

298 XML Extender - Amministrazione e programmazione

Page 309: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Figura 19 mostra che i client hanno codepage coerenti con la codifica del

documento e con la codifica dichiarata.

Codepage differenti portano alle seguenti situazioni:

v Si verifica una conversione in cui i dati vengono persi, in particolare se la

codepage di origine è Unicode e quella di destinazione non è Unicode. Unicode

contiene una serie di caratteri completa. Se un file viene convertito da UTF-8 in

una codepage che non supporta tutti i caratteri utilizzati nel documento, parte

dei dati potrebbe essere persa durante la conversione.

v La codifica dichiarata del documento XML potrebbe non essere più coerente con

la codifica reale del documento se il documento viene richiamato da un client

con una codepage differente da quella dichiarata del documento.

Figura 20 a pagina 300 descrive un ambiente in cui le codepage dei client non sono

coerenti.

Figura 19. Client con codepage corrispondenti

Appendice B. Considerazioni sulla codepage 299

Page 310: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Il client riceve il documento in EUC, ma il documento ha una dichiarazione di

codifica UTF-8.

Dichiarazione di una codifica

Il valore predefinito della dichiarazione di codifica è UTF-8 e l’assenza di una

dichiarazione di questo tipo implica che il documento sia in UTF-8.

Per dichiarare un valore di codifica:

Nella dichiarazione del documento XML, specificare la dichiarazione di codifica

con il nome della codepage del client. Ad esempio:

<?xml version="1.0" encoding="UTF-8" ?>

Esempi di conversione

XML Extender elabora i documenti XML durante:

v La memorizzazione e il richiamo di dati di colonne XML utilizzando il metodo

di accesso e memorizzazione delle colonne XML

v La composizione e la decomposizione dei documenti XML

I documenti subiscono una conversione di codepage quando vengono inviati da un

client o da un server a un database. La mancanza di coerenza o il danneggiamento

di documentiXML si verificano principalmente durante le conversioni dalle

codepage del client, del server e del database. Quando si sceglie la dichiarazione di

codifica del documento, così come quando si pianifica l’importazione o

l’esportazione da parte di client e server dei documenti dal database, considerare le

conversioni descritte nelle tabelle precedenti e gli scenari riportati di seguito.

Figura 20. Client con codepage non corrispondenti

300 XML Extender - Amministrazione e programmazione

Page 311: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

I seguenti scenari descrivono i casi più comuni di conversione che si possono

verificare:

Scenario 1: questo scenario rappresenta una configurazione con codifiche coerenti,

nessuna conversione di DB2 e un documento importato dal server. La

dichiarazione di codifica del documento è UTF-8, quella del server è UTF-8 e

quella del database è UTF-8. DB2 non deve convertire il documento in quanto la

codepage del server e quella del database sono uguali. La codifica e la

dichiarazione sono coerenti.

1. Il documento viene importato nel database DB2 utilizzando l’UDF

XMLClobfromFile.

2. Il documento viene estratto sul server.

Scenario 2: questo scenario rappresenta una configurazione con codifiche coerenti,

una conversione di DB2 e un documento importato dal server ed esportato sul

client. La codifica del documento e la dichiarazione è SJIS, le codepage del client e

del server sono SJIS e le codepage del database sono UTF-8.

1. Il documento viene importato nel database DB2 utilizzando l’UDF

XMLClobfromfile dal server. DB2 converte il documento da SJIS e lo

memorizza in UTF-8. La dichiarazione di codifica e la codifica non sono

coerenti nel database.

2. Un client che utilizza SJIS richiede il documento per una presentazione su un

browser Web. DB2 converte il documento in SJIS, ovvero la codepage del client.

A questo punto, la codifica del documento e l a dichiarazione di codifica sono

coerenti sul client.

Scenario 3: questo scenario rappresenta una configurazione con codifiche non

coerenti, una conversione di DB2 e un documento importato dal server ed

esportato sul client. La dichiarazione di codifica del documento è SJIS per il

documento in entrata. La codepage del server è SJISibm-1047 e quelle del client e

del database sono UTF-8.

1. Il documento viene importato nel database the utilizzando un’UDF di

memorizzazione. DB2 converte il documento in UTF-8 da SJIS. La codifica e la

dichiarazione non sono coerenti.

2. Un client con una codepage UTF-8 richiede il documento per una presentazione

su un browser Web. DB2 non lo converte in quanto il client e il database hanno

la stessa codepage. La codifica del documento e la dichiarazione non sono

coerenti in quanto la dichiarazione è SJIS e la codifica è UTF-8. Il documento

non può essere elaborato da un parser XML o da un altro strumento di

elaborazione XML.

Scenario 4: questo scenario rappresenta una configurazione con perdita di dati,

una conversione di DB2 e un documento importato da un server in UTF-8. La

dichiarazione di codifica del documento è UTF-8, il server è UTF-8 e il database è

SJIS.

Il documento viene importato nel database DB2 utilizzando l’UDF

XMLClobfromFile. DB2 converte la codifica in SJIS. Quando il documento viene

importato, il documento memorizzato nel database potrebbe essere danneggiato in

quanto i caratteri rappresentati in UTF-8 potrebbero non avere una

rappresentazione in SJIS.

Scenario 5: questo scenario è una configurazione con una limitazione di Windows

NT. Su Windows NT, le locali del sistema operativo non possono essere impostate

Appendice B. Considerazioni sulla codepage 301

Page 312: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

su UTF-8, tuttavia DB2 consente al client di impostare la codepage su UTF-8

utilizzando db2set DB2CODEPAGE=1208. In questo scenario, il client e il server si

trovano sullo stesso sistema. Il client è UTF-8, ma il server non può essere

impostato su UTF-8; la sua codepage è 1252. Il documento viene codificato in 1252

e la dichiarazione di codifica è ibm-1252. La codepage del database è UTF-8.

1. Il documento viene importato dal server mediante un’UDF di memorizzazione

e viene convertito da 1252 a 1208.

2. Il documento viene quindi esportato da DB2 mediante l’UDF Content() che

restituisce un file XML. DB2 converte il documento da UTF-8 a 1252, anche se il

client si aspetta 1208 poiché il client si trova sullo stesso sistema del server, che

è impostato su 1208.

Suggerimenti per evitare documenti XML non coerenti

Nelle sezioni precedenti è stato descritto come un documento XML può avere una

codifica non coerente, ovvero nel momento in cui la dichiarazione di codifica è in

conflitto con la codifica del documento. Codifiche non coerenti possono portare

alla perdita dei dati e a documenti XML non utilizzabili.

Utilizzare uno dei seguenti suggerimenti per verificare che la codifica del

documento XML sia coerente con la codepage del client, prima di passare il

documento a un processore XML co me un parser:

v Quando si esporta un documento da un database mediante le UDF di XML

Extender, provare una delle seguenti tecniche (assumendo che XML Extender

abbia esportato il file, nella codepage del server, sul file system del server):

– Convertire il documento nella codepage della codifica dichiarata

– Sovrascrivere la codifica dichiarata, se lo strumento è dotato di una funzione

del genere

– Modificare manualmente la dichiarazione di codifica del documento esportato

nella codifica reale del documento (ovvero, la codepage del server)v Quando si esporta un documento da un database mediante le procedure

memorizzate di XML Extender, provare una delle seguenti tecniche (assumendo

che il client interroghi la tabella dei risultati, in cui è memorizzato il documento

composto):

– Convertire il documento nella codepage della codifica dichiarata

– Sovrascrivere la codifica dichiarata, se lo strumento è dotato di una funzione

del genere

– Prima di interrogare la tabella dei risultati, lasciare che il client imposti la

variabile d’ambiente DB2CODEPAGE per convertire la codepage del client in

una codepage compatibile con la dichiarazione di codifica del documento

XML.

– Modificare manualmente la dichiarazione di codifica del documento esportato

nella codifica reale del documento (ovvero, la codepage del client)

Limitazione quando si utilizza Unicode e un client Windows NT: su Windows

NT, la locale del sistema operativo non può essere impostata su UTF-8. Utilizzare

la seguente procedura quando si importano o si esportano i documenti:

v Quando si importano i file e le DTD codificate in UTF-8, impostare la codepage

del client su UTF-8, mediante:

db2set DB2CODEPAGE=1208

Utilizzare questa tecnica quando:

302 XML Extender - Amministrazione e programmazione

Page 313: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

– Si inserisce una DTD nella tabella DB2XML.DTD_REF

– Si abilita una colonna o una raccolta

– Si decompongono procedure memorizzatev Quando si utilizzano le UDF Content() o XMLFromFile per importare i

documenti XML, questi devono essere codificati nella codepage della locale del

sistema operativo del server, che non può essere UTF-8.

v Quando si esporta un file XML dal database, impostare la codepage del client

con il seguente comando, in modo che DB2 codifichi i dati risultati in UTF-8:

db2set DB2CODEPAGE=1208

Utilizzare questa tecnica quando:

– Si interroga la tabella dei risultati in seguito alla composizione

– Si estraggono i dati da una colonna XML mediante le UDF di estrazionev Quando si utilizzano le UDF Content() o XMLxxxfromFile per esportare i

documenti XML su file presenti sul file system del server, i documenti risultanti

saranno codificati nella codepage della locale del sistema operativo del server,

che non può essere UTF-8.

Appendice B. Considerazioni sulla codepage 303

Page 314: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

304 XML Extender - Amministrazione e programmazione

Page 315: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Appendice C. Limiti di XML Extender

In questa sezione sono descritti i limiti per:

v Oggetti XML Extender

v Valori restituiti da UDF

v Parametri delle procedure memorizzate

v Colonne delle tabelle di supporto gestione

v Composizione e decomposizione

v Le seguenti variabili d’ambiente:

– DB2DXX_MIN_TMPFILE_SIZE

– DB2_DXX_PATHS_ALLOWED_READ

– DB2_DXX_PATHS_ALLOWED_WRITE

– DB2DXXTEMP

La seguente tabella descrive i limiti per gli oggetti XML Extender.

Tabella 96. Limiti per oggetti XML Extender

Oggetto Limite

Numero massimo di righe in una tabella in

una raccolta XML di decomposizione

10240 righe da ogni documento XML

decomposto

Numero massimo di byte in un percorso di

file XML specificato come valore di

parametro

512 byte

Lunghezza dell’elemento sql_stmt in un file

DAD per la composizione SQL

Su sistemi Windows e UNIX:

32.765 byte.

Sistemi OS/390 e iSeries:

16.380 byte.

Numero massimo di colonne per una tabella

nel file DAD per la decomposizione

RDB_node

500 colonne (per una tabella)

sono specificate da text_node

e attribute_node

in un file DAD.

Numero massimo di colonne in una tabella

associata in una raccolta Xcollection DAD

Ogni tabella associata a una Xcollection nel

file DAD può avere un massimo di 500

colonne associate a nodi di testo o di

attributi. Se si associa a più di 500 colonne in

una tabella, DB2 emette il messaggio

DXXQ039E, “Numero eccessivo di colonne

specificate per una tabella nel file DAD.”

La seguente tabella descrive i valori dei limiti restituiti dalle funzioni definite

dall’utente di XML Extender.

Tabella 97. Limiti per i valori UDF

Valori restituiti dell’UDF Limite

Numero massimo di byte restituiti da un

UDF extractCHAR

254 byte

Numero massimo di byte restituiti da un

UDF extractCLOB

2 gigabyte

© Copyright IBM Corp. 1999 - 2006 305

Page 316: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 97. Limiti per i valori UDF (Continua)

Valori restituiti dell’UDF Limite

Numero massimo di byte restituiti da un

UDF extractVARCHAR

4 kilobyte

La seguente tabella descrive i limiti per i parametri delle procedure memorizzate

di XML Extender.

Tabella 98. Limiti per i parametri delle procedure memorizzate

Parametri procedura memorizzata Limite

Dimensione massima di un documento XML

CLOB1

1 MB

Dimensione massima di un DAD (Document

Access Definition) CLOB1

100 KB

Dimensione massima di collectionName 30 byte

Dimensione massima di dbName 8 byte

Dimensione massima di tbName2 128 byte

Dimensione massima di colName 30 byte

Dimensione massima di tablespace 18 byte

Dimensione massima di defaultView 128 byte

Dimensione massima di rootID 128 byte

Dimensione massima di resultTabName 128 byte

Dimensione massima di resultColumn 128 byte

Dimensione massima di validColumn 128 byte

Dimensione massima di varchar 32672 byte

Note:

1. Questa dimensione può essere modificata per dxxGenXMLClob e dxxRetrieveXMLCLOB.

2. Se il valore del parametro tbName è qualificato da un nome schema, l’intero nome

(compreso il carattere separatore) non deve essere più lungo di 128 byte.

La seguente tabella descrive i limiti per la tabellaDB2XML.DTD_REF.

Tabella 99. Limiti di XML Extender

Colonne della tabella DB2XML.DTD_REF Limite

Dimensione della colonna AUTHOR 128 byte

Dimensione della colonna CREATOR 128 byte

Dimensione della colonna UPDATOR 128 byte

Dimensione della colonna DTDID 128 byte

Dimensione della colonna CONTENT 100 KB

I nomi possono subire un’espansione quando il database DB2 li converte dalla

codepage del client alla codepage del database. Un nome può rientrare nel limite

della dimensione sul client, ma può superare il limite quando la procedura

memorizzata richiama il nome convertito.

306 XML Extender - Amministrazione e programmazione

Page 317: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

La seguente tabella descrive i limiti per la composizione e la decomposizione.

Tabella 100. Limiti per la composizione e la decomposizione di XML Extender

Oggetto Limite

Numero massimo di righe inserite in una

tabella in una raccolta XML di

decomposizione

10240 righe da ogni documento XML

decomposto

Lunghezza massima dell’attributo name in

elements_node o attribute_node all’interno di

un DAD

63 byte

Numero massimo di byte nel percorso

XMLFile specificato come valore del

parametro

512 byte

Numero massimo di colonne in una chiave 16 colonne

Variabile d’ambiente DB2DXX_MIN_TMPFILE_SIZE

XML Extender inserisce documenti di grosse dimensioni in file temporanei per

evitare di utilizzare troppa memoria durante l’elaborazione. Su sistemi con molta

memoria fisica, è possibile evitare di spostare i documenti in file temporanei

riducendo l’attività di input/output. La variabile d’ambiente

DB2DXX_MIN_TMPFILE_SIZE indica a XML Extender di utilizzare buffer di

memoria piuttosto che file temporanei per l’elaborazione di documenti più piccoli

del valore specificato. La variabile è applicabile solo sul server, non su un client. Se

più nodi fisici fanno parte di una partizione multinodo, è possibile impostare la

variabile in maniera differente per ciascun nodo, riflettendo precisamente la

quantità di memoria installata su ciascun sistema. Se non si imposta questa

variabile, i documenti che superano 128 KB vengono inseriti automaticamente in

file temporanei mentre i documenti con dimensione inferiore a 128 KB vengono

elaborati nella memoria.

Variabili d’ambiente DB2_DXX_PATHS_ALLOWED_READ

eDB2_DXX_PATHS_ALLOWED_WRITE

Queste variabili DB2 limitano l’accesso in lettura e scrittura delle UDF di XML

Extender al file system. È necessario impostare le variabili di registro DB2 prima di

utilizzare le UDF di XML Extender che leggono o scrivono sul file system del

server. Tali variabili sono descritte nella seguente tabella:

Tabella 101. Variabili DB2 da impostare prima di utilizzare le UDF XML Extender per

leggere o scrivere sul file system

Variabile Valori

DB2_DXX_PATHS_ALLOWED_READ

Specifica la posizione sul file system del

server che le UDF di XML Extender possono

leggere. Quando il registro non è impostato

(ovvero contiene un valore null), le UDF

XML Extender non potranno leggere il file

system. Il valore ANY significa che le UDF

possono leggere da qualsiasi posizione del

file system.

Valore predefinito = null

Valori: ANY o un percorso valido

Appendice C. Limiti di XML Extender 307

Page 318: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Tabella 101. Variabili DB2 da impostare prima di utilizzare le UDF XML Extender per

leggere o scrivere sul file system (Continua)

Variabile Valori

DB2_DXX_PATHS_ALLOWED_WRITE

Specifica la posizione sul file system del

server su cui le UDF di XML Extender

possono scrivere. Quando il registro non è

impostato (ovvero contiene un valore null),

le UDF XML Extender non potranno scrivere

sul file system. Il valore ANY significa che le

UDF possono scrivere su qualsiasi posizione

del file system.

Valore predefinito = null

Valori: ANY o un percorso valido

Prima di poter iniziare a lavorare con DB2 XML Extender, è necessario impostare il

percorso in cui verranno memorizzati i file temporanei. La variabile d’ambiente

DB2DXXTEMP controlla la posizione dei file temporanei di XML Extender. Se la

variabile non è impostata, il valore della variabile di sistema TMP determina il

percorso. Per impostare il valore di DB2DXXTEMP su Windows XP:

1. Collegarsi con l’ID utente utilizzato con DB2.

2. Fare clic su Start—>Pannello di controllo.

3. Fare doppio clic sull’icona Sistema.

4. Passare alla pagina Avanzate.

5. Fare clic su Variabili d’ambiente.

6. Fare clic su Nuovo nella sezione Variabili di sistema. Immettere DB2DXXTEMP

per il nome della variabile ed immettere un valore, come ad esempio C:\temp.

7. Fare clic su OK, chiudere tutte le finestre e riavviare il sistema.

308 XML Extender - Amministrazione e programmazione

Page 319: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Glossario di XML Extender

percorso della posizione assoluto. Il percorso completo di un oggetto. Il percorso assoluto inizia al livello più alto,

detto elemento ″root″, identificato dal carattere barra (/) o barra inversa (\).

metodi di accesso e memorizzazione. Associa i documenti XML a un database DB2 mediante due metodi di accesso

e memorizzazione principali: le colonne XML e le raccolte XML. Vedere anche colonna XML e raccolta XML.

funzione di accesso. Una funzione fornita dall’utente che converte il tipo di dati del testo memorizzati in una

colonna in un tipo che possa essere elaborato da Net Search Extender.

amministrazione. L’attività di preparazione dei documenti di testo per la ricerca, la gestione degli indici e il

richiamo delle informazioni sullo stato.

tabelle di supporto di gestione. Le tabelle utilizzate da un extender del database DB2 per elaborare le richieste

utente su oggetti XML. Alcune tabelle di supporto di gestione identificano le tabelle utente e le colonne abilitate per

XML Extender. Altre tabelle del supporto di gestione contengono informazioni sugli attributi relative agli oggetti nelle

colonne abilitate. Sinonimi con la tabella di metadati.

analisi. Per calcolare i valori numerici per le caratteristiche di un’immagine e per aggiungere i valori a un catalogo

QBIC.

API. Consultare application programming interface.

API (application programming interface).

1. Un’interfaccia funzionale fornita dal sistema operativo o da un programma su licenza ordinabile separatamente.

Un’API consente a un programma dell’applicazione scritto in un linguaggio di livello superiore di utilizzare

funzioni o dati specifici del sistema operativo o dei programmi su licenza.

2. Gli extender del database DB2 forniscono API per la richiesta di UDF (user-defined function), di operazioni di

gestione, di operazioni di visualizzazione e di rilevazione modifiche alle scene video. DB2 Net Search Extender

fornisce le API per servizi di recupero informazioni, operazioni di gestione e UDF di richiesta. In DB2, una

funzione all’interno dell’interfaccia. Ad esempio, l’API di acquisizione messaggi di errore.

attributo. Consultare attributo XML.

nodo_attributo. Una rappresentazione di un attributo di un elemento.

BLOB (binary large object). Una stringa binaria la cui lunghezza può essere fino a 2 GB. Gli oggetti immagini,

audio e video sono memorizzati in un database DB2 come BLOB.

ricerca booleana. Una ricerca in cui uno o più termini sono combinati utilizzando gli operatori Booleani.

esplorazione. Per visualizzare il testo visualizzato sul monitor di un computer.

browser. Una funzione di Net Search Extender che consente di visualizzare un testo su un monitor del computer.

Vedere Browser Web.

indicizzazione B-tree. Lo schema indica nativo fornito dal motore database DB2. Crea delle voci di indice nella

struttura B-tree. Supporta i tipi di database DB2.

funzione di casting. Una funzione utilizzata per convertire istanze di un tipo di dati (di origine) in istanze di un

tipo di dati (di destinazione) differente. In generale, una funzione di casting ha lo stesso nome del tipo di dati di

destinazione. Essa ha un singolo argomento il cui tipo è il tipo di dati di origine; il tipo di ritorno è il tipo di dati di

destinazione.

CCSID. Coded Character Set Identifier.

CLOB (character large object). Una stringa di caratteri single-byte, in cui la stringa può occupare fino a 2 GB. I

CLOB hanno una codepage associata. Gli oggetti di testo che contengono caratteri single-byte sono memorizzati in un

database DB2 come CLOB.

© Copyright IBM Corp. 1999 - 2006 309

Page 320: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

CLOB. Character large object.

code page. Un’assegnazione di caratteri grafici e di significati della funzione di controllo per tutti i punti di codice.

Ad esempio, l’assegnazione di caratteri e significati a 256 punti di codice per un codice di 8-bit.

dati della colonna. I dati memorizzati in una colonna del database DB2. Il tipo di dati può essere uno qualsiasi di

quelli supportati da DB2.

composizione. Per creare documenti XML dai dati relazionali in una raccolta XML.

condizione. Una specifica dei criteri per la selezione dei dati XML o il modo in cui unire le tabelle di raccolte XML.

DAD. Vedere Document access definition.

scambio di dati. La condivisione di dati tra le applicazioni. XML supporta lo scambio di dati senza necessità di

percorrere prima il processo di conversione dati da un formato proprietario.

origine dati. Un gestore dati relazionale o non relazionale remoto in grado di supportare l’accesso ai dati tramite un

driver ODBC che supporta le API ODBC.

flusso di dati. Informazioni restituite da una funzione API, compreso il testo (almeno un paragrafo) contenente il

termine ricercato e le informazioni per evidenziare il termine trovato in tale testo.

tipo di dati. Un attributo di colonne e valori letterali.

partizione del database. Una parte del database che consiste nei relativi dati utente, indici, file di configurazione e

registrazioni di transazione. Talvolta chiamato nodo o nodo database.

server di partizioni database. Gestisce una partizione del database. Tale server è composto da un gestore database e

dalla raccolta di dati e risorse di sistema che gestisce. Generalmente un server di partizioni database viene assegnato

a ogni sistema.

DBCLOB. Double-byte character large object.

DBCS. Double-byte character support.

decomposizione. Separa i documenti XML di una raccolta di tabelle relazionali in una raccolta XML.

funzione di casting predefinita. Esegue il casting del tipo base SQL in UDT.

vista predefinita. Una rappresentazione di dati in cui sono uniti una tabella XML e tutte le tabelle laterali associate.

disabilitazione. Per ripristinare un database o una colonna alla condizione precedente rispetto all’abilitazione per

XML Extender, rimuovendo gli elementi creati durante tale processo di abilitazione.

tipo distinto. Vedere user-defined type.

documento. Vedere documento di testo.

DAD (Document Access Definition). Un documento XML utilizzato per definire lo schema di indicizzazione per

uno schema di associazione o una colonna XML di una raccolta XML. Può essere utilizzato per abilitare una raccolta

XML o una colonna di XML Extender,

DTD (Document type definition). Una serie di dichiarazioni per attributi ed elementi XML. Il DTD definisce quali

elementi vengono utilizzati nel documento XML, in quale ordine possono essere utilizzati e quali elementi

contengono altri elementi. È possibile associare un DTD a un file DAD (document access definition) per convalidare i

documenti XML.

DBCLOB (double-byte character large object). Una stringa di caratteri double-byte o una combinazione di caratteri

single e double-byte, in cui la stringa può occupare fino a 2 GB. I DBCLOB hanno una codepage associata. Gli oggetti

di testo che contengono caratteri double-byte sono memorizzati in un database DB2 come DBCLOB.

DTD. Vedere Document type definition.

310 XML Extender - Amministrazione e programmazione

Page 321: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

tabella di riferimento DTD (tabella DTD_REF). Una tabella che contiene DTD utilizzati per convalidare i

documenti XML. Gli utenti possono inserire i propri DTD nella tabella DTD_REF. Tale tabella viene creata quando un

database viene abilitato per XML.

tabella DTD_REF. Tabella di riferimento DTD.

repository DTD. Una tabella database DB2, denominata DTD_REF, in cui ogni riga della tabella rappresenta un

DTD con ulteriori informazioni sui metadati.

EDI. Electronic Data Interchange.

EDI (Electronic Data Interchange). Uno standard per electronic data interchange per applicazioni B2B

(business-to-business).

elemento. Vedere elemento XML.

nodo_elemento. Una rappresentazione di un elemento. Un nodo_elemento può essere l’elemento root o l’elemento

secondario.

SQL incorporato. Le istruzioni SQL codificate all’interno di un programma applicativo. Vedere SQL statico.

abilitazione. Per preparare un database o una colonna per l’utilizzo da parte di XML Extender.

carattere escape. Un carattere che indica che il carattere successivo non deve essere interpretato come carattere di

masking.

XSL (Extensible Stylesheet Language). Un linguaggio utilizzato per esprimere i fogli di stile. XSL consiste in due

parti: un linguaggio per la conversione di documenti XML e un vocabolario XML per specificare la semantica di

formattazione.

XSLT (Extensible Stylesheet Language Transformation). XSLT è un programma di utilità con cui si applicano i fogli

di stile XSL ai documenti XML, convertendo i documenti XML di origine in HTML, testo o altri tipi di documenti

XML.

file esterno. Un file presente in un file system esterno a DB2.

variabile di riferimento file. Una variabile di programmazione, utile per spostare un LOB in e da un file su una

stazione di lavoro client.

chiave esterna. Una chiave che fa parte della definizione di un vincolo referenziale e che consiste in una o più

colonne di una tabella dipendente.

GB (gigabyte). Un bilione di (10⁹) byte. Quando si fa riferimento alla capacità di memoria , 1 073 741 824 byte.

variabile host. Una variabile in un programma dell’applicazione a cui è possibile fare riferimento nelle istruzioni

SQL incorporate. Le variabili host sono il meccanismo primario per la trasmissione di dati tra aree di lavoro di un

programma dell’applicazione e di un database.

JDBC (Java Database Connectivity). Un’API (application programming interface) con le stesse caratteristiche di

ODBC (Open Database Connectivity) ma progettata in modo specifico per l’utilizzo da parte di applicazioni database

Java. Inoltre, per database che non dispone di un driver JDBC, JDBC include un JDBC al bridge ODBC, che è un

meccanismo per la conversione di JDBC in ODBC; JDBC presenta l’API JDBC alle applicazioni del database java e la

converte in ODBC. JDBC è stato sviluppato da Sun Microsystems, Inc.e da diversi partner e fornitori.

JDBC. Java Database Connectivity.

unione. Un’operazione relazionale che consente il richiamo di dati da una o più tabelle basate sui valori di colonna

corrispondenti.

vista join. Una vista del database DB2 creata dall’istruzione ″CREATE VIEW″ che unisce una o più tabelle.

KB (kilobyte). Mille (10³) byte. Quando si fa riferimento alla capacità di memoria, 1024 byte.

LOB (large object). Una sequenza di byte, in cui la lunghezza può arrivare fino a 2 GB. Un LOB può essere di tre

tipi: BLOB (binary large object), CLOB (character large object) o DBCLOB (double-byte character large object).

Glossario di XML Extender 311

Page 322: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

LOB. Large object.

indicatore di posizione LOB. Un valore di dimensioni ridotte (4-byte) memorizzato in una variabile host, che può

essere utilizzato in un programma per fare riferimento a un LOB di dimensioni maggiori in un database DB2.

Utilizzando un indicatore di posizione LOB, un utente può gestire il LOB come se fosse memorizzato in una normale

variabile host e senza necessità di trasferire il LOB tra l’applicazione sul sistema client e il server di database.

percorso. Il percorso è una sequenza di tag XML che identifica un attributo o un elemento XML. Il percorso

identifica la struttura del documento XML, indicando il contesto per l’attributo o elemento. Una singola barra (/) del

percorso indica che il contesto è l’intero documento. Il percorso viene utilizzato nelle UDF di estrazione per

identificare gli attributi e gli elementi da estrarre. Il percorso viene utilizzato anche nel file DAD per specificare

l’associazione tra un elemento o attributo XML e una colonna database DB2 durante la definizione dello schema di

indicizzazione per la colonna XML.

indicatore di posizione. Un puntatore che è possibile utilizzare per individuare un oggetto. In DB2, l’indicatore di

posizione LOB (large object block) è il tipo di dati che individua i LOB.

nodo logico. Un nodo su un processore quando più nodi sono assegnati a tale processore.

schema di associazione. Una definizione delle modalità di rappresentazione dati XML in un database relazionale.

Lo schema di associazione è specificato nel DAD. XML Extender fornisce due tipi di schemi di associazione:

associazione SQL e associazione del nodo di database relazionale (RDB_node).

MB (megabyte). Un milione di (10⁶) byte. Quando si fa riferimento alla capacità di memoria , 1 048 576 byte.

tabella di metadati. Vedere tabella del supporto di gestione.

ricorrenze multiple. Un’indicazione della possibile ricorrenza multipla di un elemento in un documento. Le

ricorrenze multiple vengono specificate nel DAD.

oggetto. Nella programmazione orientata all’oggetto, un’astrazione che consiste in dati e operazioni associate a tali

dati.

ODBC. Open Database Connectivity.

Open Database Connectivity. Un’API (application programming interface) standard per l’accesso ai dati su sistemi

di gestione di database relazionali e non. Utilizzando tale API, le applicazioni database possono accedere ai dati

memorizzati nei sistemi di gestione database su diversi computer anche se ogni sistema di gestione database utilizza

un formato differente di memorizzazione dati e di interfaccia di programmazione. ODBC si basa sulla specifica CLI

(call level interface) di X/Open SQL Access Group ed è stato sviluppato da DEC (Digital Equipment Corporation),

Lotus, Microsoft e Sybase. È in contrasto con Java Database Connectivity.

funzione di carico. Un nome funzione per cui esistono più istanze della funzione.

espressione di percorso. Vedere percorso.

predicato. Un elemento di una condizione di ricerca che esprime o implica un’operazione di confronto.

chiave primaria. Una chiave univoca che fa parte della definizione di una tabella. Una chiave primaria è la chiave

parent predefinita di una definizione di vincolo referenziale.

procedura. Vedere procedura memorizzata.

RDB_node. Nodo del database relazionale.

associazione RDB_node. La posizione del contenuto di un elemento XML o il valore di un attributo XML, definiti

da RDB_node. XML Extender utilizza questa associazione per determinare se memorizzare o richiamare i dati XML.

nodo del database relazionale (RDB_node). Un nodo che contiene una o più definizioni di elemento per le tabelle,

le colonne opzionali e le condizioni opzionali. Le tabelle e le colonne vengono utilizzate per definire la modalità di

memorizzazione dei dati XML nel database. La condizione specifica i criteri per la selezione dei dati XML o la

modalità di unione delle tabelle di raccolte XML.

serie di risultati. Una serie di righe restituite da una procedura memorizzata.

312 XML Extender - Amministrazione e programmazione

Page 323: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

tabella di risultati. Una tabella che contiene le righe come risultato di una query SQL o dell’esecuzione di una

procedura memorizzata.

elemento root. L’elemento principale di un documento XML.

ID root. Un identificativo univoco che associa tutte le tabelle laterali alla tabella dell’applicazione.

SBCS. Single-byte character support.

funzione scalare. Un’operazione SQL che produce un singolo valore da un altro valore ed è espressa come nome

funzione, seguito da un elenco di argomenti racchiusi tra parentesi.

schema. Una raccolta di oggetti database quali tabelle, viste, indici o trigger. Essa fornisce una classificazione logica

degli oggetti database.

argomento di ricerca. Le condizioni specificate durante una ricerca, che consistono in uno o diversi termini di

ricerca e nei relativi parametri.

ricerca sezione. Fornisce la ricerca di un testo in una sezione che può essere definita dall’applicazione. Per

supportare la ricerca di testo strutturale, è possibile definire una sezione in base al percorso abbreviato di XPath.

tabella laterale. Ulteriori tabelle create da XML Extender per migliorare le prestazioni durante la ricerca di elementi

o attributi in una colonna XML.

percorso della posizione semplice. Una sequenza di nomi del tipo di elemento collegati da una barra singola (/).

associazione SQL. Una definizione della relazione del contenuto di un elemento XML o del valore di un attributo

XML con i dati relazionali, utilizzando una o più istruzioni SQL e il modello dati XSLT. XML Extender utilizza la

definizione per determinare se memorizzare o richiamare i dati XML. L’associazione SQL viene definita con

l’elemento SQL_stmt in DAD.

SQL statico. Istruzioni SQL incorporate in un programma e preparate durante il processo di preparazione del

programma e prima dell’esecuzione del programma. Dopo la preparazione, un’istruzione SQL statica non cambia,

sebbene possano cambiare i valori delle variabili host specificate dall’istruzione.

procedura memorizzata. Un blocco di costrutti procedurali e istruzioni SQL incorporate memorizzate in un database

e che è possibile chiamare in base al nome. Le procedure memorizzate consentono a un programma dell’applicazione

di essere eseguito in due parti. Una parte viene eseguita sul client e l’altra sul server. Ciò consente a una chiamata di

produrre diversi accessi al database.

indice di testo strutturale. Per indicizzare le chiavi di testo basate sulla struttura ad albero del documento XML,

utilizzando IBM DB2 Net Search Extender.

interrogazione secondaria. Un’istruzione SELECT completa utilizzata all’interno di una condizione di ricerca di

un’istruzione SQL.

tablespace. Un’astrazione di una raccolta di contenitori in cui sono memorizzati gli oggetti database. Un tablespace

fornisce un livello di riferimenti indiretti tra un database e le tabelle memorizzate al suo interno. Un tablespace:

v Ha spazio sulle periferiche di memoria dei supporti assegnate ad esso.

v Contiene tabelle create al suo interno. tali tabelle utilizzeranno spazio nei contenitori che appartengono al

tablespace. I dati, l’indice, il campo long e le parti LOB di una tabella possono essere memorizzati nello stesso

tablespace o possono essere suddivisi in tablespace separati.

terabyte. Un trilione (1012) di byte. Da dieci a dodici elevazioni a potenza di un byte. Quando si fa riferimento alla

capacità di memoria , 1 099 511 627 776 byte.

text_node. Una rappresentazione del testo CDATA di un elemento.

top element_node. Una rappresentazione dell’elemento root del documento XML in DAD.

traccia. L’azione di memorizzazione informazioni in un file può essere utilizzata in un secondo momento per

rilevare la causa di un errore.

Glossario di XML Extender 313

Page 324: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

trigger. La definizione di una serie di azioni da eseguire in caso di modifica di una tabella. I trigger possono essere

utilizzati per eseguire azioni come la convalida di dati di input, la creazione automatica di un valore per una riga

appena inserita, la lettura da altre tabelle per scopi di riferimenti incrociati o la scrittura in altre tabelle per scopi di

controllo. I trigger vengono spesso utilizzati per il controllo integrità o per rafforzare le regole aziendali.

UDF. Vedere user-defined function.

UDT. Vedere user-defined type.

URL (uniform resource locator). Un indirizzo che specifica un server HTTP e, facoltativamente, una directory e un

nome file, ad esempio: http://www.ibm.com/software /data/db2/extenders.

UNION. Un’operazione SQL che combina i risultati di due istruzioni Select. UNION viene utilizzato spesso per

unire elenchi di valori ottenuti da diverse tabelle.

URL. Uniform resource locator.

UDT (user-defined distinct type). Un tipo di dati creati da un utente di DB2, in contrasto con un tipo di dati

fornito dal database DB2, come ad esempio LONG VARCHAR.

UDF (user-defined function). Una funzione definita da un utente in DB2. Una volta definita, la funzione può essere

utilizzata nelle query SQL e negli oggetti video. Ad esempio, è possibile creare delle UDF per acquisire il formato di

compressione di un video o per restituire l’intervallo di campionamento di un file audio. La suddetta funzione

fornisce una modalità di definizione della funzionalità di oggetti di un tipo specifico.

UDF (user-defined function). Una funzione SQL creata da un utente di DB2, in contrasto con una funzione SQL

fornita da DB2. Net Search Extender fornisce funzioni di ricerca, tra cui CONTAINS, nel formato di UDF.

UDT (user-defined type). Un tipo di dati definito da un utente in DB2. Gli UDT vengono utilizzati per differenziare

un LOB da un altro. Ad esempio, è possibile creare un UDT per oggetti di immagini e altri per oggetti audio.

Sebbene vengano memorizzati come BLOB, gli oggetti di immagini e audio vengono considerati come tipi distinti dai

BLOB e differenti tra di loro.

UDF (user-defined function). Una funzione definita nel sistema di gestione del database e a cui si può fare

riferimento nelle interrogazioni SQL. Può essere una delle seguenti funzioni:

v Una funzione esterna, in cui il corpo della funzione è scritto in un linguaggio di programmazione i cui argomenti

sono valori scalari e viene prodotto un risultato scalare per ogni richiamo.

v Una funzione di origine, implementata da un’altra funzione incorporata o UDF, già nota a DBMS. Tale funzione

può essere una funzione scalare o una funzione di colonna (di aggregazione) e restituisce un singolo valore da una

serie di valori (ad esempio, MAX o AVG).

UDT (user-defined type). Un tipo di dati non nativo nel gestore database, creato da un utente. Vedere tipo distinto.

tabella utente. Una tabella creata per l’applicazione e utilizzata da essa.

convalida. Il processo di utilizzo di un DTD per garantire che il documento XML sia valido e per consentire ricerche

strutturate su dati XML. Il DTD è memorizzato nel repository di DTD.

documento valido. Un documento XML che dispone di un DTD associato. Per essere valido, il documento XML non

può violare le regole sintattiche specificate nel relativo DTD.

video. Appartenente alla parte di informazioni registrate che è possibile visualizzare.

video clip. Una sezione di materiale filmato o videoregistrato.

indice video. Un file utilizzato da Video Extender per individuare una specifica istantanea o fotogramma in un video

clip.

browser Web. Un programma client che avvia le richieste a un server Web e memorizza le informazioni restituite

dal server.

documento in formato corretto. Un documento che corrisponde al documento contrassegnato di produzione,

rispetta tutti i criteri di forma corretta indicati nella specifica w3.org e ognuna delle entità analizzate a cui si fa

riferimento direttamente o indirettamente nel documento è un documento in formato corretto.

314 XML Extender - Amministrazione e programmazione

Page 325: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

carattere jolly. Vedere carattere di masking.

XML. eXtensible Markup Language.

attributo XML. Qualsiasi attributo specificato da ATTLIST nell’elemento XML nello schema DTD o XML. XML

Extender utilizza il percorso per identificare un attributo.

raccolta XML. Una raccolta di tabelle di relazione che presenta i dati per comporre i documenti XML o da

decomporre dai documenti XML.

colonna XML. Una colonna nella tabella dell’applicazione che è stata abilitata per XML Extender.

elemento XML. Qualsiasi tag XML o ELEMENT come viene specificata nello schema XML o DTD XML. XML

Extender utilizza il percorso per identificare un elemento.

oggetto XML. Equivalente a un documento XML.

XPath. (XML Path Language) Un linguaggio per indirizzare le parti di un documento XML. XML Path Language è

progettato per essere utilizzato da XSLT. Ogni percorso può essere espresso utilizzando la sintassi definita per XPath.

tabella XML. Una tabella dell’applicazione che include una o più colonne di XML Extender.

tag XML. Qualsiasi tag di linguaggio con markup XML valida, principalmente l’elemento XML. L’elemento e la tag

dei termini vengono utilizzate in modo interscambiabile.

UDF XML. UN’UDF (user-defined function) del database DB2 fornita da XML Extender.

UDT XML. UN UDT (user-defined type) del database DB2 fornito da XML Extender.

XPath. Un linguaggio per indirizzare le parti di un documento XML.

modello di dati XPath. La struttura ad albero utilizzata per modellare ed esplorare un documento XML utilizzando

i nodi.

XSL. Extensible Stylesheet Language.

XSLT. Extensible Stylesheet Language Transformation.

Glossario di XML Extender 315

Page 326: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

316 XML Extender - Amministrazione e programmazione

Page 327: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Informazioni particolari

È possibile che negli altri paesi l’IBM non offra i prodotti, le funzioni o i servizi

illustrati in questo documento. Consultare il rappresentante IBM locale per

informazioni sui prodotti o sui servizi disponibili nel proprio paese. Ogni

riferimento relativo a prodotti, programmi o servizi IBM non implica che solo quei

prodotti, programmi o servizi IBM possono essere utilizzati. In sostituzione a quelli

forniti dall’IBM, è possibile usare prodotti, programmi o servizi funzionalmente

equivalenti che non comportino violazione dei diritti di proprietà intellettuale o di

altri diritti dell’IBM. È comunque responsabilità dell’utente valutare e verificare la

possibilità di utilizzare altri prodotti, programmi o servizi non IBM.

L’IBM può avere brevetti o domande di brevetti in corso relativi a quanto trattato

nella presente pubblicazione. La fornitura di questa pubblicazione non implica la

concessione di alcuna licenza su di essi. Chi desiderasse ricevere informazioni

relative alle licenze può rivolgersi per iscritto a:

IBM Director of Licensing

IBM Corporation

Schoenaicher Str. 220

D-7030 Boeblingen

Deutschland

Per richieste di licenze relative ad informazioni double-byte (DBCS), contattare il

Dipartimento di Proprietà Intellettuale IBM nel proprio paese o inviare richieste

per iscritto a:

IBM World Trade Asia Corporation

Licensing

2-31 Roppongi 3-chome, Minato-ku

Tokyo 106, Japan

Il seguente paragrafo non è valido per il Regno Unito o per tutti i paesi le cui

leggi nazionali siano in contrasto con le disposizioni in esso contenute:

L’INTERNATIONAL BUSINESS MACHINES CORPORATION FORNISCE

QUESTA PUBBLICAZIONE “NELLO STATO IN CUI SI TROVA” SENZA

ALCUNA GARANZIA, ESPLICITA O IMPLICITA, IVI INCLUSE EVENTUALI

GARANZIE DI COMMERCIABILITÀ ED IDONEITÀ AD UNO SCOPO

PARTICOLARE. Alcuni stati non consentono la rinuncia a garanzie esplicite o

implicite in determinate transazioni, quindi, la presente dichiarazione potrebbe non

essere a voi applicabile.

Questa pubblicazione potrebbe contenere imprecisioni tecniche o errori tipografici.

Le informazioni incluse in questo documento vengono modificate su base

periodica; tali modifiche verranno incorporate nelle nuove edizioni della

pubblicazione. L’IBM si riserva il diritto di apportare miglioramenti e/o modifiche

al prodotto o al programma descritto nel manuale in qualsiasi momento e senza

preavviso.

Tutti i riferimenti a siti Web non dell’IBM sono forniti unicamente a scopo di

consultazione. I materiali contenuti in tali siti Web non fanno parte di questo

prodotto IBM e l’utente si assume ogni rischio relativo al loro utilizzo.

© Copyright IBM Corp. 1999 - 2006 317

Page 328: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

L’IBM può utilizzare o divulgare le informazioni ricevute dagli utenti secondo le

modalità ritenute appropriate, senza alcun obbligo nei loro confronti.

Coloro che detengono la licenza su questo programma e desiderano avere

informazioni allo scopo di consentire: (i) uno scambio di informazioni tra

programmi indipendenti e altri (compreso questo) e (ii) l’uso reciproco di tali

informazioni, dovrebbero rivolgersi a:

IBM Canada Limited

Office of the Lab Director

8200 Warden Avenue

Markham, Ontario

L6G 1C7

CANADA

Queste informazioni possono essere rese disponibili, secondo condizioni

contrattuali appropriate, compreso, in alcuni casi, il pagamento in addebito.

Il programma concesso in licenza descritto nel presente documento e tutto il

materiale concesso in licenza disponibile sono forniti da IBM in base alle clausole

dell’Accordo per Clienti IBM, IBM IPLA (International Program License

Agreement) o qualsiasi altro accordo equivalente tra le parti.

Qualsiasi informazione relativa alle prestazioni è stata verificata in un ambiente

controllato. Di conseguenza l’utilizzo del prodotto in ambienti operativi diversi

può comportare risultati sensibilmente diversi. Alcune rilevazioni possono essere

state effettuate su sistemi a livello di sviluppo e non si garantisce in alcun modo,

dunque, che siano uguali alle rilevazioni eseguite sui vari sistemi disponibili.

Inoltre, è possibile che ad alcune di queste rilevazioni si sia pervenuti tramite

estrapolazione. I risultati reali potrebbero variare. È necessario che gli utenti

confrontino i dati in base agli ambienti utilizzati.

Le informazioni relative a prodotti non IBM sono state ottenute dai fornitori di tali

prodotti. L’IBM non ha verificato tali prodotti e non può garantire l’accuratezza

delle prestazioni. Eventuali commenti relativi alle prestazioni dei prodotti non IBM

devono essere indirizzati ai fornitori di tali prodotti.

Le dichiarazioni relative a futuri intenti o obiettivi IBM sono soggette a modifiche

senza preavviso.

Questa pubblicazione contiene esempi di dati e prospetti usati quotidianamente

nelle operazioni aziendali. Pertanto può contenere nomi di persone, società, marchi

e prodotti. Tutti i nomi contenuti nel manuale sono fittizi e ogni riferimento a nomi

ed indirizzi reali è puramente casuale.

LICENZA RELATIVA AI DIRITTI D’AUTORE:

Queste informazioni contengono programmi applicativi di esempio in lingua

originale che illustrano le tecniche di programmazione su diverse piatteforme

operative. È possibile copiare, modificare e distribuire questi programmi di

esempio sotto qualsiasi forma senza alcun pagamento alla IBM allo scopo di

sviluppare, utilizzare, commercializzare o distribuire i programmi applicativi in

conformità alle API (application programming interface) a seconda della

piattaforma operativa per cui tali esempi di programmi sono stati scritti. Questi

esempi non sono stati testati approfonditamente tenendo conto di tutte le

condizioni possibili. La IBM, quindi, non può garantire o assicurare l’affidabilità, la

praticità o il funzionamento di questi programmi.

318 XML Extender - Amministrazione e programmazione

Page 329: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Ogni copia o ogni parte di questi programmi campione o di qualsiasi lavoro

derivato, deve includere la seguente informativa relativa ai diritti d’autore:

© (nome della vostra società) (anno). Parti di questo codice derivano dalla IBM Corp.

Programmi di esempio. © Copyright IBM Corp. _immettere l’anno o gli anni_. Tutti i

diritti riservati.

Marchi

I nomi di società, prodotti o servizi identificati nei documenti della

documentazione di DB2 Versione 9 possono essere marchi o servizi della

International Business Machines Corporation o di altre società. Le informazioni sui

marchi della IBM Corporation negli Stati Uniti e/o negli altri paesi sono situate in

http://www.ibm.com/legal/copytrade.shtml.

I seguenti termini sono marchi di altre società e sono stati utilizzati in minimo un

documento della libreria DB2:

Microsoft, Windows, Windows NT e il logo Windows sono marchi della Microsoft

Corporation negli Stati Uniti e/o negli altri paesi.

Intel, Itanium, Pentium e Xeon sono marchi della Intel Corporation negli Stati Uniti

e/o negli altri paesi.

Java e tutti i marchi a base Java sono marchi della Sun Microsystems, Inc. negli

Stati Uniti e/o altri paesi.

UNIX è un marchio registrato della The Open Group negli Stati Uniti e/o altri

paesi.

Linux è un marchio della Linus Torvalds negli Stati Uniti e/o negli altri paesi.

Nomi di altri prodotti, società e servizi possono essere marchi di altre società.

Informazioni particolari 319

Page 330: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

320 XML Extender - Amministrazione e programmazione

Page 331: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Indice analitico

Aaccess and storage method

choosing an 36

planning 36

XML collections 167

XML columns 167

access methodchoosing an 36

introduction 5

planning an 36

XML collections 89

XML column 74

addingnodes 66

administrationdxxadm command 125

support tablesDTD_REF 261

XML_USAGE 261

tools 36

administration stored proceduresdxxDisableCollection() 190

dxxDisableColumn() 189

dxxDisableDB() 187

dxxEnableCollection() 189

dxxEnableColumn() 187

dxxEnableDB() 186

administration wizardEnable a Column window 53

logging in 36

specifying address 36

specifying JDBC driver 36

specifying user ID and password 36

administrative support tablesDTD_REF 261

XML_USAGE 261

associazione RDB_nodechiave composta per la

decomposizione 48

condizioni 47

determinazione per le raccolte

XML 44

requisiti 47

requisiti di decomposizione 48

specifica del tipo di colonna per

decomposizione 48

associazione SQLclausola FROM 46

clausola ORDER BY 46

clausola SELECT 45

clausola WHERE 46

determinazione per le raccolte

XML 43

requisiti 45

Schema di associazione SQL 45

attribute_node 41, 50, 106, 167

attributo orderByper la decomposizione 48

per più ricorrenze 48

raccolte XML 48

BB-tree indexing 75

bindingstored procedures 183

Ccasting function

retrieval 78, 139

storage 76, 136

update 82, 155

CCSID (coded character set identifier)declare in USS 90, 94, 295

chiave compostaper la decomposizione 48

raccolte XML 48

chiave primaria per la

decomposizione 48

clausola FROM 46

clausola ORDER BY 46

clausola SELECT 45

clausola WHERE 46

client code page 295

code pagesclient 295

configuring locale settings 295

consistent encoding in USS 295

consistent encodings and

declarations 295

conversionscenarios 295

data loss 295

database 295

DB2 assumptions 295

DB2CODEPAGE registry

variable 295

declaring an encoding 295

document encoding consistency 295

encoding declaration 295

exporting documents 295

importing documents 295

legal encoding declarations 295

line endings 295

preventing inconsistent

documents 295

server 295

supported encoding declarations 295

terminology 295

UDFs and stored procedures 295

Windows NT UTF-8 limitation 295

XML Extender assumptions 295

colonne XMLdeterminazione UDT della

colonna 38

elementi e attributi da ricercare 39

file DAD, pianificazione per 39

il DAD per 39

pianificazione 38

quando utilizzarlo 38

scenari 38

column typesdecomposition 106

command optionsdisable_collection 131

disable_column 129

disable_db 127

enable_collection 130

enable_column 128

enable_db 126

complexType element 117

composing XML documents 17

composite keysfor decomposition 106

XML collections 106

compositiondxxGenXML() 90

dxxRetrieveXML() 90

overriding the DAD file 175

stored proceduresdxxGenXML() 17, 191, 197

dxxmqGen() 232

dxxmqRetrieve() 236

dxxRetrieveXML() 194, 200

XML collection 90

conditionsRDB_node mapping 106

SQL mapping 101, 104

condizioniassociazione RDB_node 47

associazione SQL 43, 46

facoltativo 47

condizioni joinassociazione RDB_node 47

associazione SQL 46

consistent documents 295

Content() functionfor retrieval 78

retrieval functions using 139

XMLFile to a CLOB 139

convalidaimpatto di prestazioni 40

convalida dei dati XMLconsiderazioni 40

decisione 40

requisiti DTD 40

conversionscode pages 295

creatingnodes 66

XML tables 52

DDAD

definizioni nodoRDB_node 47

DAD (Document Access Definition)file

attribute_node 167

bind step for USS encodings 295

CCSIDs in USS 90, 94, 295

© Copyright IBM Corp. 1999 - 2006 321

Page 332: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

DAD (Document Access Definition)

(Continua)file (Continua)

creating for XML collections 62

declaring the encoding 295

DTD for the 171

editing for XML collections 62

element_node 106, 167

examples 287

for XML columns 165, 167

introduction 5

node definitions 167

overriding 175

RDB_node 106

root element_node 106

root_node 167

samples 287

size limit 167, 305

text_node 167

data loss, inconsistent encodings 295

databaserelazionale 42

databasescode page 295

enabling for XML 51

relational 101

dati della colonnaUDT disponibili 38

DB2CODEPAGEregistry variable 295

DB2XML 261

DTD_REF table schema 261

schema for stored procedures 89

schema for UDFs and UDTs 136

XML_USAGE table schema 261

decomposing an XML collectioncollection table limit 305

composite key 106

DB2 table sizes 94

dxxInsertXML() 94

dxxShredXML() 94

of XML collections 94

specifying the column type for 106

specifying the orderBy attribute 106

specifying the primary key for 106

stored proceduresdxxInsertXML() 203

dxxmqInsert() 246

dxxmqInsertAll 250

dxxmqInsertAllCLOB() 251

dxxmqInsertCLOB() 248

dxxmqShred() 241

dxxmqShredAll() 242

dxxShredXML() 202

using RDB_node mapping 66

decomposizionechiave composta 48

dimensioni tabelle DB2 50

specifica del tipo di colonna per 48

specifica dell’attributo orderBy 48

specifica della chiave primaria per 48

deletingnodes 66

XML collections 98

dimensioni tabelle, per la

decomposizione 50

disable_collection command 131

disable_column command 129

disable_db command 127

disablingadministration command 125

databases for XML, stored

procedure 187

disable_collection command 131

disable_column command 129

disable_db command 127

stored procedure 187, 189, 190

XML collections 114

stored procedure 190

XML columnsstored procedure 189

document encoding declaration 295

document structure, maintaining 74

document type definition 52

DTDavailability 4

for getting started lessons 17

for the DAD 171

planning 17

publication 4

repositoryDTD_REF 5, 261

storing in 52

using multiple 50

utilizzo di più 40

DTD_REF table 52

column limits 305

inserting a DTD 52

schema 261

DTDID 261

DVALIDATE 161

DXX_SEQNO for multiple occurrence 57

dxxadm commanddisable_collection command 131

disable_column command 129

disable_db command 127

enable_collection command 130

enable_column command 128

enable_db command 126

introduction to 125

syntax 125

dxxDisableCollection() stored

procedure 190

dxxDisableColumn() stored

procedure 189

dxxDisableDB() stored procedure 187

dxxEnableCollection() stored

procedure 189

dxxEnableColumn() stored

procedure 187

dxxEnableDB() stored procedure 186

dxxGenXML() 17

dxxGenXML() stored procedure 90, 191,

197

dxxInsertXML() stored procedure 94,

203

dxxmqGen() stored procedure 232

dxxmqInsert() stored procedure 246

dxxmqInsertAll() stored procedure 250

dxxmqInsertAllCLOB() stored

procedure 251

dxxmqInsertCLOB() stored

procedure 248

dxxmqRetrieve() stored procedure 236

dxxmqShred() stored procedure 241

dxxRetrieveXML() stored procedure 90,

194, 200

DXXROOT_ID 75

dxxShredXML() stored procedure 94,

202

dxxtrc command 263, 264

dynamically overriding the DAD file,

composition 175

Eelement_node 41, 48, 106, 167

Enable a Column window 53

enable_collection keyword 130

enable_column keyword 128

enable_db keywordcreating XML_USAGE table 261

option 126

enablingXML collections 112

encodingCCSID declarations in USS 90, 94,

295

XML documents 295

environment variablesCLASSPATH 36

existing DB2 data 89

Extensible Markup Language (XML)in XML documents 3

extractChar() function 148

extractChars() function 148

extractCLOB() function 151

extractCLOBs() function 151

extractDate() function 152

extractDates() function 152

extractDouble() function 146

extractDoubles() function 146

extracting functionsdescription 135

extractChar() 148

extractChars() 148

extractCLOB() 151

extractCLOBs() 151

extractDate() 152

extractDates() 152

extractDouble() 146

extractDoubles() 146

extractReal() 147

extractReals() 147

extractSmallint() 145

extractSmallints() 145

extractTime() 153

extractTimes() 153

extractTimestamp() 154

extractTimestamps() 154

extractVarchar() 149

extractVarchars() 149

introduction to 143

table of 78

extractReal() function 147

extractReals() function 147

extractSmallint() function 145

extractSmallints() function 145

extractTime() function 153

extractTimes() function 153

extractTimestamp() function 154

322 XML Extender - Amministrazione e programmazione

Page 333: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

extractTimestamps() function 154

extractVarchar() function 149

extractVarchars() function 149

Ffile DAD

attribute_node 41

definizioni nodoattribute_node 41

element_node 41

root_node 41

text_node 41

element_node 41, 47

element_node root 47

limite dimensione 39, 40

per colonne XML 39, 40

pianificazione per il 39, 40

colonna XML 39

raccolte XML 39

RDB_node 47

root_node 41

text_node 41

FROM clauseSQL mapping 104

function pathadding DB2XML schema 136

functionscasting 76, 78, 82

Content(): from XMLFILE to

CLOB 139

extractChar() 148

extractChars() 148

extractCLOB() 151

extractCLOBs() 151

extractDate() 152

extractDates() 152

extractDouble() 146

extractDoubles() 146

extracting 143

extractReal() 147

extractReals() 147

extractSmallint() 145

extractSmallints() 145

extractTime() 153

extractTimes() 153

extractTimestamp() 154

extractTimestamps() 154

extractVarchar() 149

extractVarchars() 149

generate_unique 135

limitations when invoking from

JDBC 87

limits 305

MQReadAllXML 212

MQReadAllXMLCLOB 215

MQReadXML 210

MQReadXMLCLOB 214

MQReceiveAllXML 219

MQReceiveXML 217

MQReceiveXMLCLOB 223

MQSENDXML 225

MQSENDXMLFILE 226

MQSendXMLFILECLOB 228

MQSeries 208

retrievaldescription 135

functions (Continua)retrieval (Continua)

from external storage to memory

pointer 139

from internal storage to external

server file 139

introduction 139

XML data 78

storage 76, 135, 136

update 82, 135, 155

XML columns 135

XMLCLOBFromFile() 136

XMLFile to a CLOB 139

XMLFileFromCLOB() 136, 137

XMLFileFromVarchar() 136, 138

XMLVarcharFromFile() 136, 139

Hhighlighting conventions vii

Iimporting

DTD 52

include filesfor stored procedures 183

inconsistentdocument 295

indexing 75

side tables 58, 75

structural-text 75

XML columns 75

XML documents 75

Information Center, including this book

in vii

installingthe 35

JJava database connectivity (JDBC)

limitations when invoking UDFs 87

JDBC (Java database connectivity)limitations when invoking UDFs 87

JDBC address, for wizard 36

JDBC driver, for wizard 36

join conditionsRDB_node mapping 106

SQL mapping 104

Llimits

stored procedure parameters 90, 261

XML Extender 305

lineendings, code page

considerations 295

localessettings 295

location pathintroduction 110

syntax 111

XPath 5

location path (Continua)XSL 5

loggingin, for wizard 36

Mmaintaining

document structure 74

mapping schemedetermining RDB_node mapping 101

determining SQL mapping 101

figure of DAD file 36

for XML collections 36

for XML columns 36

FROM clause 104

introduction 89

ORDER BY clause 104

RDB_node mapping

requirements 106

SELECT clause 104

SQL mapping requirements 104

SQL mapping scheme 101

SQL_stmt 101

WHERE clause 104

messagesXML 270

metodo di accesso e memorizzazionecolonne XML 40, 41

raccolte XML 40, 41

migratingXML Extender to Version 8 35

migrazioneXML Extender alla Versione 8 35

MQPublishXML function 208

MQRcvAllXML function 221

MQRcvXMLCLOB function 224

MQReadAllXML function 212

MQReadAllXMLCLOB function 215

MQReadXML function 210

MQReadXMLCLOB function 214

MQReceiveAllXML function 219

MQReceiveXML function 217

MQReceiveXMLCLOB function 223

MQSENDXML function 225

MQSENDXMLFILE function 226

MQSendXMLFILECLOB function 228

MQSeriesfunctions 208

multiple DTDsXML columns 50

multiple occurrenceaffecting table size 94

deleting elements and attributes 98

DXX_SEQNO 57

one column per side table 57

order of elements and attributes 94

orderBy attribute 106

preserving the order of elements and

attributes 98

recomposing documents with 106

searching elements and attributes 84

updating collections 98

updating elements and attributes 82,

98, 155

updating XML documents 82, 155

multiple-occurrence attribute 17

Indice analitico 323

Page 334: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Nnodes

adding 66

attribute_node 167

creating 66

DAD file configuration 17, 59, 62, 66

deleting 66

element_node 167

RDB_node 106

removing 66

root_node 167

text_node 167

nodiattribute_node 41

element_node 41

RDB_node 47

root_node 41

text_node 41

nonamespacelocation 50

Ooperating systems

supported by DB2 3

Operations Navigatorstarting the trace 263

stopping the trace 264

ORDER BY clauseSQL mapping 104

orderBy attributefor decomposition 106

for multiple occurrence 106

XML collections 106

overloaded functionContent() 139

overrideTypeNo override 175

SQL override 175

XML override 175

overridingDAD file 175

Pparameter markers in functions 87

performanceindexing side tables 75

searching XML documents 75

stopping the trace 264

pianificazionecome ricercare i dati della colonna

XML 39

convalida di più DTD 40

determinazione UDT della

colonna 38

di colonne XML 38

per colonne XML 39

per il DAD 39, 40

per raccolte XML 40

schema di associazione 42

schema di associazione di raccolte

XML 42

selezione della convalida di dati

XML 40

più DTDraccolte XML 40

planningaccess methods 36

DAD 167

DTD 17

indexing XML columns 75

mapping schemes 101

mapping XML document and

database 17

side tables 57

storage methods 36

validating with multiple DTDs 50

XML collections 167

XML collections mapping

scheme 101

primary keysdecomposition 106

side tables 75

problem determination 263

processing instructions 109, 167

Rraccolte XML

associazione di schemi 43

associazione RDB_node 44

associazione SQL 43

determinazione di uno schema di

associazione per 42

file DAD, pianificazione per 39

quando utilizzarlo 38

scenari 38

schema di associazione 42

RDB_node mappingrequirements 106

registry variablesDB2CODEPAGE 295

removingnodes 66

repository, DTD 52

retrieval functionsContent() 139

description of 135

from external storage to memory

pointer 139

from internal storage to external

server file 139

introduction to 139

XMLFile to a CLOB 139

retrieving dataattribute values 78

return codesstored procedures 265

UDF 264

ricorrenze multipleattributo orderBy 48

determinazione della dimensione

tabelle 50

ricomposizione di documenti con 48

ROOT IDindexing considerations 75

specifying 53

root_node 41, 167

Ssamples

creatingXML 17

document access definition (DAD)

files 287

getstart.xml sample XML

document 287

schema di associazioneclausola FROM 46

clausola ORDER BY 46

clausola SELECT 45

clausola WHERE 46

determinazione dell’associazione

RDB_node 44

determinazione dell’associazione

SQL 43

figura del file DAD 37

per colonne XML 37

per raccolte XML 37

requisiti 45

requisiti di associazione

RDB_node 47, 48

requisiti di associazione SQL 45

Schema di associazione SQL 45

SQL_stmt 42

schema namesfor stored procedures 89

schemabindings 50

schemasattributes 118

DB2XML 51, 136

declaring data types in 118

declaring elements in 118

DTD_REF table 52, 261

validating using 50

XML_USAGE table 261

searchingXML documents

by structure 84

using DB2 Text Extender 84

SELECT clause 104

server code page 295

side tablesindexing 58, 75

planning 57

searching 84

specifying ROOT ID 53

updating 82

size limitsstored procedures 90, 261

XML Extender 305

software requirementsXML Extender 35

SQL mapping 59

creating a DAD file 17

determining for XML collections 101

requirements 104

SQL override 175

SQL_stmtclausola FROM 46

clausola ORDER_BY 46

clausola SELECT 45

clausola WHERE 46

FROM clause 104

ORDER_BY clause 104

SELECT clause 104

324 XML Extender - Amministrazione e programmazione

Page 335: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

SQL_stmt (Continua)WHERE clause 104

startingXML Extender 35

storagefunctions

description 135

introduction 136

storage UDF table 76

XMLCLOBFromFile() 136

XMLFileFromCLOB() 136, 137

XMLFileFromVarchar() 136, 138

XMLVarcharFromFile() 136, 139

methodschoosing 36

introduction 5

planning 36

XML collections 89

XML column 74

storage UDFs 76, 82

stored proceduresadministration

dxxDisableCollection() 190

dxxDisableColumn() 189

dxxDisableDB() 187

dxxEnableCollection() 189

dxxEnableColumn() 187

dxxEnableDB() 186

XML Extender, list 186

binding 183

callingXML Extender 183

CLOBs 184

code page considerations 295

compositiondxxGenXML() 191, 197

dxxmqGen() 232

dxxmqRetrieve() 236

dxxRetrieveXML() 194, 200

XML Extenders 191

decompositiondxxInsertXML() 203

dxxmqInsert() 246

dxxmqInsertAll 250

dxxmqInsertAllCLOB() 251

dxxmqInsertCLOB() 248

dxxmqShred() 241

dxxmqShredAll() 242

dxxShredXML() 202

XML Extenders 202

dxxDisableCollection() 190

dxxDisableColumn() 189

dxxDisableDB() 187

dxxEnableCollection() 189

dxxEnableColumn() 187

dxxEnableDB() 186

dxxGenXML() 17, 90, 191, 197

dxxInsertXML() 94, 203

dxxmqGen() 232

dxxmqInsert() 246

dxxmqInsertAll() 250

dxxmqInsertAllCLOB() 251

dxxmqInsertCLOB() 248

dxxmqRetrieve() 236

dxxmqShred() 241

dxxRetrieveXML() 90, 194, 200

dxxShredXML() 94, 202

stored procedures (Continua)include files 183

initializingDXXGPREP 183

return codes 265

XML Extender 183

storing the DTD 52

storing XML data 76

structureDTD 17

hierarchical 17

mapping 17

relational tables 17

XML document 17

stylesheets 109, 167

SVALIDATE 161

syntaxdisable_collection command 131

disable_column command 129

disable_db command 127

dxxadm 125

enable_collection command 130

enable_column command 128

enable_db command 126

extractChar() function 148

extractChars() function 148

extractCLOB() function 151

extractCLOBs() function 151

extractDate() function 152

extractDates() function 152

extractDouble() function 146

extractDoubles() function 146

extractInteger() function 144

extractIntegers() function 144

extractReal() function 147

extractReals() function 147

extractSmallint() function 145

extractSmallints() function 145

extractTime() function 153

extractTimes() function 153

extractTimestamp() function 154

extractTimestamps() function 154

extractVarchar() function 149

extractVarchars() function 149

location path 111

Update() function 155

XMLCLOBFromFile() function 136

XMLFile to a CLOB Content()

function 139

XMLFileFromCLOB() function 136,

137

XMLFileFromVarchar() function 136,

138

XMLVarcharFromFile() function 139

Ttables 94

text_node 41, 50, 106, 167

tipo di colonna, per decomposizione 48

tracesstarting 263

stopping 264

transfer of documents between client and

server, considerations 295

transforming XML to HTMLXSLTransformToCLOB 256

transforming XML to HTML (Continua)XSLTransformToFile 257

troubleshootingstored procedure return codes 265

strategies 263

UDF return codes 264

UUDFs (user-defined functions)

code page considerations 295

DVALIDATE() 161

extractChar() 148

extractChars() 148

extractCLOB() 151

extractCLOBs() 151

extractDate() 152

extractDates() 152

extractDouble() 146

extractDoubles() 146

extracting functions 143

extractReal() 147

extractReals() 147

extractSmallint() 145

extractSmallints() 145

extractTime() 153

extractTimes() 153

extractTimestamp() 154

extractTimestamps() 154

extractVarchar() 149

extractVarchars() 149

for XML columns 135

from external storage to memory

pointer 139

from internal storage to external

server file 139

retrieval functions 139

return codes 264

searching with 84

storage 82

SVALIDATE() 161

Update() 82, 155

XMLCLOBFromFile() 136

XMLFile to a CLOB 139

XMLFileFromCLOB() 136, 137

XMLFileFromVarchar() 136, 138

XMLVarcharFromFile() 136, 139

UDTtabella riassuntiva di 38

XMLCLOB 38

XMLFILE 38

XMLVARCHAR 38

Update() functiondocument replacement behavior 155

introduction 155

XML 82, 135

updatesside tables 82

XML collection 98

XML column dataattributes 82

description 82

entire document 82

multiple occurrence 155

specific elements 82

XML document replacement by

Update() UDF 155

Indice analitico 325

Page 336: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

user-defined functions (UDFs)for XML columns 135

searching with 84

Update() 82, 155

user-defined types (UDTs)for XML columns 73

XML 133

XMLCLOB 73

XMLFILE 73

XMLVARCHAR 73

user IDsAdministration wizard 36

Vvalidating

using schemas 50

XML DTDs 52

WWHERE clause

requirements for SQL mapping 104

WindowsUTF-8 limitation, code pages

Windows NT 295

XXML

data, storing 76

override 175

repository 36

tables, creating 52

XML collectionscomposition 90

creating the DAD (command line) 62

decomposing using RDB_node

mapping 66

decomposition 94

definition 5

determining a mapping scheme 101

disabling 114

DTD for validation 52

editing the DAD (command line) 62

enabling 112

introduction 89

mapping schemes 101

RDB_node mapping 101

SQL mapping 101

storage and access methods 5, 89

validation 52

XML columnscreating a DAD file for 165

defining and enabling 75

definition 5

enabling 53

figure of side tables 57

indexing 75

introduction 74

location path 110

maintaining document structure 74

retrieving dataattribute values 78

element contents 78

entire document 78

XML columns (Continua)retrieving XML data 78

sample DAD file 287

storage and access methods 5, 74

UDFs 135

updating XML dataattributes 82

entire document 82

specific elements 82

with side tables 75

XML documentsB-tree indexing 75

code page assumptions 295

code page consistency 295

code page conversion, exporting 295

code page conversion, importing 295

composing 17, 90

decomposition 94

deleting 86

encoding declarations 295

indexing 75

introduction 3

legal encoding declarations 295

mapping to tables 17

searchingdirect query on side tables 84

document structure 84

from a joined view 84

multiple occurrence 84

structural text 84

with extracting UDFs 84

stored in DB2 3

supported encoding declarations 295

XML DTD repositorydescription 5

DTD Reference Table (DTD_REF) 5

XML Extenderavailable operating systems 3

functions 135

introduction 3

stored procedures 183

XML Path Language 5

XML schemasadvantages 117

example 119

validating 161

XML Toolkit for OS/390 and z/OS 6

XML_USAGE table 261

XMLClobFromFile() function 136

XMLFile to a CLOB function 139

XMLFileFromCLOB() function 136, 137

XMLFileFromVarchar() function 136, 138

XMLVarcharFromFile() function 136, 139

XPath 5

XSLT 43, 101

using 17

XSLTransformTOClob() 256

XSLTransformToFile 257

326 XML Extender - Amministrazione e programmazione

Page 337: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Come ottenere ulteriori informazioni dalla IBM

Per contattare la IBM nel proprio paese o nella propria regione, selezionare IBM

Directory of Worldwide Contacts in http://www.ibm.com/planetwide

Per ulteriori informazioni sui prodotti DB2, andare all’indirizzo

http://www.ibm.com/software/data/db2/.

© Copyright IBM Corp. 1999 - 2006 327

Page 338: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

328 XML Extender - Amministrazione e programmazione

Page 339: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00
Page 340: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

���

Printed in Denmark by IBM Danmark A/S

SC13-3579-00

Page 341: XML Extender Amministrazionepublic.dhe.ibm.com/ps/products/db2/info/vr9/pdf/... · DB2 ® XML Extender-Amministrazione e programmazione DB2 Versione 9 per Linux, UNIX e Windows SC13-3579-00

Spine information:

IBM

DB

2 DB

2 Ve

rsio

ne 9

XML

Exte

nder

- A

mm

inis

trazi

one

e pr

ogra

mm

azio

ne

��