XMLTABLE funzione di tabella
La funzione XMLTABLE restituisce una tabella dei risultati dalla valutazione delle espressioni XQuery, eventualmente utilizzando argomenti di input specificati come variabili XQuery. Ogni voce sequenza nella sequenza di risultato dell'espressione XQuery di riga rappresenta una riga della tabella dei risultati.
- 1 The xml-table-ordinality-column-definition clause must not be specified more than once (SQLSTATE 42614).
- 2 The data type of the expression cannot be DECFLOAT.
Lo schema è SYSIBM. Il nome funzione non può essere specificato come nome qualificato.
- xmlnamespaces - dichiarazione
- Specifica una o più dichiarazioni di namespace XML che diventano parte del contesto statico della riga - xquery - espressione - costante e la colonna - xquery - espressione - costante. La serie di namespace staticamente noti per le espressioni XQuery che sono argomenti di XMLTABLE è la combinazione della serie pre - stabilita di namespace staticamente noti e le dichiarazioni namespace specificate in questa clausola. Il prologo XQuery all'interno di un'espressione XQuery potrebbe sovrascrivere questi namespace.
Se xmlnamespaces - dichiarazione non è specificato, solo la serie pre - stabilita di namespace staticamente noti si applicano alle espressioni XQuery.
riga - xquery - espressione - costante - Specifica una costante di stringa di carattere SQL che viene interpretata come un'espressione XQuery utilizzando la sintassi della lingua XQuery supportata. La stringa costante viene convertita direttamente in UTF-8 senza conversione nella pagina del database o del codice di sezione. L'espressione XQuery esegue l'utilizzo di una serie opzionale di valori XML di input e restituisce una sequenza XQuery di output dove viene generata una riga per ogni elemento della sequenza. Il valore per riga - xquery - espressione - costante non deve essere una stringa vuota o una stringa di tutti gli spazi (SQLSTATE 10505).
- PASSAGGIO
- Specifica i valori di input e il modo in cui questi valori vengono passati all'espressione XQuery specificata da riga - xquery - espressione - costante. Per impostazione predefinita, ogni nome di colonna univoco che si trova nell'ambito in cui viene richiamata la funzione viene implicitamente passato all'espressione XQuery utilizzando il nome della colonna come nome variabile. Se un identificativo in una riga - xquery - argomento di riga specificato corrisponde a un nome di colonna in - scope, allora l'argomento esplicito - xquery - argomento viene passato all'espressione XQuery che sovrasta quella implicita colonna.
- PER REF
- Specifica che gli eventuali argomenti di input XML sono, per impostazione predefinita, passati per riferimento. Quando i valori XML vengono passati per riferimento, la valutazione XQuery utilizza gli alberi del nodo di input, se presenti, direttamente dalle espressioni di input specificate, preservando tutte le proprietà, comprese le identità di nodo originali e l'ordine dei documenti. Se due argomenti superano lo stesso valore XML, i confronti di identità nodi e i confronti di ordinazione di documenti che coinvolgono alcuni nodi contenuti tra i due argomenti di input potrebbero riferirsi ai nodi all'interno dello stesso albero nodo XML.
Questa clausola non ha alcun impatto su come vengono passati i valori non XML. I valori non XML creano una nuova copia del valore durante il cast in XML.
- riga - xquery - argomento
- Specifica un argomento che deve essere passato all'espressione XQuery che viene specificato da riga - xquery - espressione - costante. Il metodo attraverso il quale riga - xquery - argomento viene utilizzato nell'espressione XQuery dipende dal fatto che l'argomento sia specificato come un xquery - context - expression - expression o un xquery - variabile - expression.
- Se il valore risultante è di tipo XML, diventa un input - xml - value. Un valore XML nullo viene convertito in una sequenza vuota XML.
- Se il valore risultante non è di tipo XML, deve essere castabile nel tipo di dati XML. Un valore nullo viene convertito in una sequenza vuota XML. Il valore convertito diventa un input - xml - value.
- xquery - contesto - voce - espressione
- Un'espressione che restituisce un valore che è XML, intero, decimale o un carattere o una stringa grafica che non è un LOB. xquery - context - expression - expression non deve essere una stringa di carattere che è bit data. xquery - variabile - espressione
- Specifica un'espressione SQL il cui valore è disponibile all'espressione XQuery specificata da riga - xquery - espressione - costante durante l'esecuzione. L'espressione non può contenere un'espressione NEXT VALUE, espressione PREVIOUS VALUE (SQLSTATE 428F9) o una funzione OLAP (SQLSTATE 42903). Il tipo di dati dell'espressione non può essere DECFLOAT.
- AS identificativo
- Specifica che il valore generato da xquery - variable - expression verrà passato a riga - xquery - espressione - costante come variabile XQuery. Il nome variabile sarà identificativo. Il segno del dollaro leader ($) che precede i nomi variabili nella lingua XQuery non è incluso in identificativo. L'identificativo deve essere un nome di variabile XQuery valido ed è limitato a un NCName XML. L'identificativo non deve essere superiore a 128 bytes di lunghezza. Due argomenti all'interno della stessa clausola PASSANDO non possono utilizzare lo stesso identificativo (SQLSTATE 42711).
- PER REF
- Indica che un valore di input XML deve essere passato per riferimento. Quando i valori XML vengono passati per riferimento, la valutazione XQuery utilizza gli alberi del nodo di input, se presenti, direttamente dalle espressioni di input specificate, preservando tutte le proprietà, comprese le identità di nodo originali e l'ordine dei documenti. Se due argomenti superano lo stesso valore XML, i confronti di identità nodi e i confronti di ordinazione di documenti che coinvolgono alcuni nodi contenuti tra i due argomenti di input potrebbero riferirsi ai nodi all'interno dello stesso albero nodo XML. Se BY REF non è specificato a seguito di un xquery - expression - variable, gli argomenti XML vengono passati per mezzo del meccanismo di passaggio predefinito che viene fornito attraverso la sintassi che segue la parola chiave PASSANDO. Questa opzione non può essere specificata per i valori non XML (SQLSTATE 42636). Quando viene passato un valore non XML, il valore viene convertito in XML; questo processo crea una copia.
- COLONNE
- Specifica le colonne di output della tabella dei risultati. Se questa clausola non viene specificata, una singola colonna senza nome di tipo XML viene restituita con riferimento, con il valore in base all'articolo di sequenza dalla valutazione dell'espressione XQuery nella riga - xquery - espressione - costante (equivalente a specificare PATH '.'). Per fare riferimento alla colonna dei risultati, un nome - colonna deve essere specificato nella correlazione - clausola in seguito alla funzione.
- xml - table - regular - column - definizione
- Specifica le colonne di output della tabella dei risultati inclusi il nome della colonna, il tipo di dati, il meccanismo di passaggio XML e un'espressione XQuery per estrarre il valore dalla voce sequenza per la riga
- Nome colonna
- Specifica il nome della colonna nella tabella dei risultati. Il nome non può essere qualificato e lo stesso nome non può essere utilizzato per più colonne della tabella (SQLSTATE 42711). tipo di dati
- Specifica il tipo di dati della colonna. Vedi CREATE TABLE per la sintassi e una descrizione dei tipi disponibili. Un tipo di dati può essere utilizzato in XMLTable se c'è un XMLCAST supportato dal tipo di dati XML al tipo di datispecificato.
- PER REF
- Specifica che i valori XML vengono restituiti con riferimento per colonne di tipo di dati XML. Per impostazione predefinita, i valori XML vengono restituiti BY REF. Quando i valori XML vengono restituiti con riferimento, il valore XML include gli alberi del nodo di input, se presenti, direttamente dai valori dei risultati, e preserva tutte le proprietà, comprese le identità di nodo originali e l'ordine dei documenti. Questa opzione non può essere specificata per le colonne non XML (SQLSTATE 42636). Quando viene elaborata una colonna non XML, il valore viene convertito da XML; questo processo crea una copia. clausola di default
- Specifica un valore predefinito per la colonna. Consultare CREATE TABLE per la sintassi e una descrizione della clausola di default. Per le colonne risultato XMLTABLE, il default viene applicato quando l'elaborazione dell'espressione XQuery contenuta in colonna - xquery - espressione - costante restituisce una sequenza vuota.
- PATH Colonna - xquery - espressione - costante
- Specifica una costante di stringa di carattere SQL che viene interpretata come un'espressione XQuery utilizzando la sintassi della lingua XQuery supportata. La stringa costante viene convertita direttamente in UTF-8 senza conversione nella pagina del database o del codice di sezione. La colonna - xquery - espressione - costante specifica un'espressione XQuery che determina il valore della colonna rispetto ad un articolo che è il risultato della valutazione dell'espressione XQuery in riga - xquery - espressione - costante. Dato un articolo dal risultato dell'elaborazione della riga - xquery - espressione - costante come elemento di contesto fornito esternamente, viene valutata la colonna - xquery - espressione - costante , restituendo una sequenza di output. Il valore della colonna è determinato in base a questa sequenza di output come segue.
- Se la sequenza di output contiene zero elementi, la predefinita - clausola fornisce il valore della colonna.
- Se viene restituita una sequenza vuota e non è stato specificato alcun predefinito - clausola , alla colonna viene assegnato un valore nullo.
- Se viene restituita una sequenza non vuota, il valore è XMLCAST al tipo di dati specificato per la colonna. Potrebbe essere restituito un errore dall'elaborazione di questo XMLCAST.
xml - tabella - ordinalità - colonna - definizione - Specifica la colonna di ordinalità della tabella dei risultati.
- Nome colonna
- Specifica il nome della colonna nella tabella dei risultati. Il nome non può essere qualificato e lo stesso nome non può essere utilizzato per più colonne della tabella (SQLSTATE 42711). PER ORDINALITÀ
- Specifica che nome - colonna è la colonna di ordinalità della tabella dei risultati. Il tipo di dati di questa colonna è BIGINT. Il valore di questa colonna nella tabella dei risultati è il numero sequenziale dell'articolo per la riga nella sequenza risultante dalla valutazione dell'espressione XQuery in riga - xquery - espressione - costante.
- Specifica le colonne di output della tabella dei risultati inclusi il nome della colonna, il tipo di dati, il meccanismo di passaggio XML e un'espressione XQuery per estrarre il valore dalla voce sequenza per la riga
Se la valutazione di una qualsiasi delle espressioni XQuery comporta un errore, allora la funzione XMLTABLE restituisce l'errore XQuery (classe SQLSTATE '10').
Esempio
SELECT U."PO ID", U."Part #", U."Product Name",
U."Quantity", U."Price", U."Order Date"
FROM PURCHASEORDER P,
XMLTABLE('$po/PurchaseOrder/item' PASSING P.PORDER AS "po"
COLUMNS "PO ID" INTEGER PATH '../@PoNum',
"Part #" CHAR(10) PATH 'partid',
"Product Name" VARCHAR(50) PATH 'name',
"Quantity" INTEGER PATH 'quantity',
"Price" DECIMAL(9,2) PATH 'price',
"Order Date" DATE PATH '../@OrderDate'
) AS U
WHERE P.STATUS = 'Unshipped'