Riferimento alle colonne in un database

Anche se la sintassi SELECT SQL standard è supportata per le query ad un database esterno, è necessario tenere presente alcuni concetti. E' necessario utilizzare la parola chiave Database come prefisso del nome della tabella per indicare che la funzione SELECT deve essere indirizzata ad un database esterno e non ad una struttura ripetuta nel messaggio.

Il formato di base della funzione SELECT del database è:

SELECT ...
  FROM Database.TABLE1
  WHERE ...

Se necessario, è possibile specificare un nome dello schema:

SELECT ...
  FROM Database.SCHEMA.TABLE1
  WHERE ...

dove SCHEMA è il nome dello schema in cui è definita la tabella TABLE1. Includere lo schema se l'ID utente utilizzato non corrisponde allo schema. Ad esempio, se l'ID utente è USER1, l'espressione Database.TABLE1 è equivalente a Database.USER1.TABLE1. Tuttavia, se lo schema associato alla tabella nel database è db2admin, è necessario specificare Database.db2admin.TABLE1. Se lo schema non viene incluso e non corrisponde all'ID utente corrente, il broker genera un errore di runtime quando un messaggio viene elaborato dal flusso di messaggi.

Se, come nei due esempi precedenti, non viene specificata un'origine dei dati, TABLE1 deve essere una tabella nel database predefinito specificato dalla proprietà data source del nodo. Per accedere ai dati in un database diverso da quello predefinito specificato sulla proprietà data source del nodo, è necessario specificare in forma esplicita l'origine dei dati. Ad esempio:
SELECT ...
  FROM Database.DataSource.SCHEMA.TABLE1
  WHERE ...

Qualificare i riferimenti ai nomi delle colonne con il nome della tabella oppure con il nome della correlazione definito per la tabella dalla clausola FROM. Quindi, dove è possibile eseguire normalmente una query come:

SELECT column1, column2 FROM table1

è necessario scrivere uno dei due formati riportati di seguito:

SELECT T.column1, T.column2 FROM Database.table1 AS T
 
SELECT table1.column1, table1.column2 FROM Database.table1

Ciò è necessario per distinguere i riferimenti alle colonne del database dai riferimenti ai campi in un messaggio che potrebbe essere contenuto nella SELECT:

SELECT T.column1, T.column2 FROM Database.table1
  AS T WHERE T.column3 = Body.Field2
E' possibile utilizzare la clausola AS per ridenominare le colonne restituite. Ad esempio:
SELECT T.column1 AS price, T.column2 AS item 
  FROM Database.table1 AS T WHERE...

L'opzione SQL standard select all è supportata nella clausola SELECT. Se si utilizza tale opzione, è necessario qualificare i nomi delle colonne con il nome della tabella oppure con il nome della correlazione definito per la tabella. Ad esempio:

SELECT T.* FROM Database.Table1 AS T

Quando si utilizzano nomi di funzioni e procedure ESQL in una query del database, il posizionamento di tali nomi all'interno della chiamata influiscono sul modo in cui tali nomi vengono elaborati. Se è determinato che la procedura o la funzione influiscono sui risultati restituiti dalla query, non vengono elaborati come ESQL e vengono passati come parte della chiamata al database.

Ciò si verifica quando si prova ad utilizzare un nome di procedura o di funzione con gli identificativi della colonna all'interno dell'istruzione SELECT.

Ad esempio, se si utilizza un'istruzione CAST su un identificativo di colonna specificato nella clausola Select, l'istruzione viene utilizzata durante la query al database per determinare il tipo di dati restituito per quella colonna. La funzione CAST ESQL non viene eseguita su quel tipo di dati ESQL ed i dati restituiti vengono influenzati dall'interpretazione dell'interazione del database di quel tipo di dati.

Se si utilizza una funzione o una procedura su un identificativo di colonna specificato nella clausola WHERE, essa viene passata direttamente al gestore database per l'elaborazione.

Gli esempi negli argomenti successivi illustrano il modo in cui vengono rappresentata le serie di risultati delle query al database esterno in WebSphere Message Broker. I risultati delle query al database vengono assegnati ai campi in un messaggio mediante un nodo Compute.

Una funzione di colonna è una funzione che utilizza i valori di una singola colonna in tutte le righe selezionate di una tabella o di messaggio e restituisce un risultato scalare singolo.

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
Riferimenti correlati
Nodo Compute
Nodo Database
Nodo Filter
Riferimento ESQL
Funzione CARDINALITY
Funzione SELECT
Messaggio di esempio
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak05760_