Verweise auf Spalten in einer Datenbank

Zwar wird die Standardsyntax der SQL-Anweisung SELECT für Abfragen an eine externe Datenbank unterstützt, es sind jedoch einige Punkte zu beachten. Sie müssen dem Namen der Tabelle das Schlüsselwort 'Database' als Präfix voranstellen, um anzuzeigen, dass sich die SELECT-Anweisung an die externe Datenbank richtet und nicht an eine sich wiederholende Struktur in der Nachricht.

Die SELECT-Anweisung für eine Datenbank hat folgendes Basisformat:

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

Falls nötig, können Sie einen Schemanamen angeben:

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

Dabei steht SCHEMA für den Namen des Schemas, in dem die Tabelle TABLE1 definiert ist. Fügen Sie das Schema ein, wenn die Benutzer-ID, unter der Sie arbeiten, nicht mit dem Schema übereinstimmt. Wenn Ihre Benutzer-ID beispielsweise USER1 lautet, ist der Ausdruck Database.TABLE1 gleichbedeutend mit Database.USER1.TABLE1. Heißt das Schema, das der Tabelle zugeordnet ist, jedoch db2admin, müssen Sie Database.db2admin.TABLE1 angeben. Wenn Sie das Schema nicht angeben und es nicht mit Ihrer aktuellen Benutzer-ID übereinstimmt, generiert der Broker einen Laufzeitfehler, wenn eine Nachricht vom Nachrichtenfluss verarbeitet wird.

Wenn wie in den vorherigen Beispielen keine Datenquelle angegeben ist, muss TABLE1 eine Tabelle in der Standarddatenbank sein, die über die Knoteneigenschaft Datenquelle angegeben wurde.Um auf Daten in einer anderen Datenbank als die Standarddatenbank zuzugreifen, die über die Knoteneigenschaft Datenquelle angegeben wurde, müssen Sie die Datenquelle explizit angeben. Beispiel:
SELECT ...
FROM Database.DataSource.SCHEMA.TABLE1
WHERE ...

Qualifizieren Sie Verweise auf Spaltennamen entweder mit dem Tabellennamen oder dem Korrelationsnamen, die durch die FROM-Klausel für die Tabelle definiert sind. Wo Sie also normalerweise eine Abfrage wie

SELECT column1, column2 FROM table1

ausführen können, müssen Sie eines der folgenden beiden Formate verwenden:

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

Dies ist nötig, um Verweise auf Datenbankspalten von Verweisen auf Felder in einer Nachricht, die ebenfalls Teil der SELECT-Anweisung sein können, zu unterscheiden:

SELECT T.column1, T.column2 FROM Database.table1
AS T WHERE T.column3 = Body.Field2
Sie können die zurückgegebenen Spalten mit der AS-Klausel umbenennen. Beispiel:
SELECT T.column1 AS price, T.column2 AS item 
FROM Database.table1 AS T WHERE...

Die SQL-Standardoption für 'Alles auswählen' wird in der SELECT-Klausel unterstützt. Bei Verwendung dieser Option müssen Sie die Spaltennamen entweder mit dem Tabellennamen oder dem Korrelationsnamen, die für die Tabelle definiert sind, qualifizieren. Beispiel:

SELECT T.* FROM Database.Table1 AS T

Wenn Sie innerhalb einer Datenbankabfrage Namen von ESQL-Prozeduren und Funktionen verwenden, wird durch die Position dieser Namen innerhalb des Aufrufs bestimmt, wie sie verarbeitet werden. Wird festgestellt, dass die Prozedur oder Funktion die von der Abfrage zurückgegebenen Ergebnisse beeinflusst, wird sie nicht als ESQL-Anweisung ausgeführt, sondern als Teil des Datenbankaufrufs übergeben.

Dies gilt für Versuche, einen Funktions- oder Prozedurnamen mit den Spaltenbezeichnern innerhalb der SELECT-Anweisung zu verwenden.

Wenn Sie beispielsweise eine CAST-Anweisung auf einen Spaltenbezeichner, der in der SELECT-Klausel angegeben ist, anwenden, wird diese während der Datenbankabfrage dazu verwendet, den Datentyp der für die Spalte zurückgegebenen Daten zu ermittelt. Für den betreffenden ESQL-Datentyp wird keine ESQL-CAST-Anweisung ausgeführt, und die zurückgegebenen Daten werden von der Interpretation des betreffenden Datentyps im Rahmen der Datenbankinteraktion beeinflusst.

Wenn Sie eine Funktion oder Prozedur auf einen Spaltenbezeichner, der in der WHERE-Klausel angegeben ist, anwenden, wird diese direkt zur Verarbeitung an den Datenbankmanager übergeben.

Die Beispiele in den folgenden Abschnitten zeigen, wie die Ergebnisse von externen Datenbankabfragen in WebSphere Message Broker dargestellt werden. Die Ergebnisse von Datenbankabfragen werden über einen Rechenknoten Feldern in einer Nachricht zugeordnet.

Eine Spaltenfunktion ist eine Funktion, die die Werte einer einzelnen Spalte in allen ausgewählten Zeilen einer Tabelle oder Nachricht verarbeitet und ein einziges skalares Ergebnis zurückgibt.

Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Übersicht zu ESQL
Nachrichten modellieren
Zugehörige Tasks
Nachrichtenfluss entwerfen
Nachrichtenflussinhalt definieren
ESQL-Dateien verwalten
Zugehörige Verweise
Rechenknoten
Datenbankknoten
Filterknoten
ESQL-Referenz
Funktion CARDINALITY
Funktion SELECT
Musternachricht
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 18.05.2006
ak05760_