Accesso a più tabelle del database

E' possibile fare riferimento a più tabelle del database create nello stesso database. Utilizzare la clausola FROM nell'istruzione SELECT per unire i dati dalle due tabelle.

Nell'esempio riportato di seguito, si suppone che siano disponibili due tabelle del database denominate USERTABLE1 e USERTABLE2. Entrambe le tabelle dispongono di due colonne del tipo di dati char(6) (o equivalente).

USERTABLE1 contiene due righe:

  Column1 Column2
Riga 1 value1 value2
Riga 2 value3 value4

USERTABLE2 contiene due righe:

  Column3 Column4
Riga 1 value5 value6
Riga 2 value7 value8

Tutte le tabelle indicate da una singola funzione SELECT devono essere nello stesso database. Il database può essere quello predefinito (specificato nella proprietà "origine dati" del nodo) oppure un altro database (specificato nella clausola FROM della funzione SELECT).

Configurare il nodo Compute, Filter o Database utilizzato per identificare il database in cui sono state definite le tabelle. Per esempio, se si sta utilizzando il database predefinito, fare clic con il tasto destro del mouse sul nodo, selezionare Apri ESQL e inserire le seguenti istruzioni ESQL nel modulo per questo nodo:

SET OutputRoot.XML.Test.Result[] =
         (SELECT A.Column1 AS FirstColumn,
                 A.Column2 AS SecondColumn,
                 B.Column3 AS ThirdColumn,
                 B.Column4 AS FourthColumn
            FROM Database.USERTABLE1 AS A,
                 Database.USERTABLE2 AS B
           WHERE A.Column1 = 'value1' AND
                 B.Column4 = 'value8'
         ); 

Ciò determina il seguente contenuto del messaggio di output:

<Test>
  <Result>
    <FirstColumn>value1</FirstColumn>
    <SecondColumn>value2</SecondColumn>
    <ThirdColumn>value7</ThirdColumn>
    <FourthColumn>value8</FourthColumn>
  </Result>
</Test>

L'esempio precedente illustra come accedere ai dati da due tabelle del database. E' possibile utilizzare clausole FROM più complesse per accedere a più tabelle del database (sebbene tutte le tabelle debbano essere nello stesso database). E' anche possibile fare riferimento ad una o più strutture ad albero del messaggio ed è possibile utilizzare SELECT per unire tabelle con tabelle, messaggi con messaggi oppure tabelle con messaggi. La sezione Unione dei dati da messaggi XML e tabelle del database contiene un esempio relativo all'unione di dati del messaggio con i dati in una tabella del database.

(definito dalla proprietà origine dati del nodo).

Se si specifica una procedura o una funzione ESQL sull'identificativo della colonna nella clausola WHERE, essa viene elaborata come parte della query del database e non come ESQL.

Considerare il seguente esempio:

  SET OutputRoot.XML.Test.Result = 
     THE(SELECT ITEM T.Column1 FROM Database.USERTABLE1 AS T 
     WHERE UPPER(T.Column2) = 'VALUE2');

Questo codice prova a restituire le righe in cui il valore di Column2 convertito in maiuscolo è VALUE2. Tuttavia, solo il gestore del database può determinare il valore di T.Column2 per qualsiasi riga fornita e quindi non può essere elaborato da ESQL prima che venga eseguita la query al database, perché la clausola WHERE determina le righe restituite al flusso di messaggi.

Per questo motivo, UPPER viene passata al gestore del database per essere inclusa come parte dell'elaborazione. Tuttavia, se il gestore del database non può elaborare il token all'interno dell'istruzione select, viene restituito un errore.

Concetti correlati
Panoramica dei flussi di messaggi
Panoramica di ESQL
Creazione di modelli di messaggio
Attività correlate
Progettazione di un flusso di messaggi
Definizione del contenuto del flusso di messaggi
Gestione dei file ESQL
Unione dei dati da messaggi XML e tabelle del database
Riferimenti correlati
Nodo Compute
Nodo Database
Nodo Filter
Riferimento ESQL
Funzione SELECT
Istruzione SET
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak05830_