Daten aus Datenbankspalten auswählen

Sie können einen Rechen-, Filter oder Datenbankknoten konfigurieren, um Daten aus Datenbankspalten auszuwählen und in eine Ausgabenachricht einzufügen. Im folgenden Beispiel wird vorausgesetzt, dass Sie über eine Datenbanktabelle mit dem Namen USERTABLE und zwei Spalten vom Datentyp CHAR(6) (oder einem äquivalenten Datentyp) mit dem Namen 'Column1' und 'Column2' verfügen. Die Tabelle enthält zwei Zeilen:

  Column1 Column2
Zeile 1 value1 value2
Zeile 2 value3 value4

Konfigurieren Sie den Rechen-, Filter- oder Datenbankknoten so, dass er die Datenbank, in der Sie die Tabelle definiert haben, identifiziert.Klicken Sie z. B. bei Verwendung der Standarddatenbank (wird über die Knoteneigenschaft "Datenquelle" angegeben) mit der rechten Maustaste auf den Knoten, wählen Sie ESQL öffnen aus, und codieren Sie die folgenden ESQL-Anweisungen im Modul für diesen Knoten:

SET OutputRoot = InputRoot;
DELETE FIELD OutputRoot.*[<];
SET OutputRoot.XML.Test.Result[] =
  (SELECT T.Column1, T.Column2 FROM Database.USERTABLE AS T);

Dies führt zur Generierung der folgenden Ausgabenachricht:

<Test>
   <Result>
      <Column1>value1</Column1>
      <Column2>value2</Column2>
   </Result>
   <Result>
      <Column1>value3</Column1>
      <Column2>value4</Column2>
   </Result>
</Test>
Um die SELECT-Anweisung auszulösen, senden Sie eine Auslösenachricht mit einem XML-Hauptteil, der das folgende Format hat:
<Test>
   <Result>
      <Column1></Column1>
      <Column2></Column2>
   </Result>
   <Result>
      <Column1></Column1>
      <Column2></Column2>
   </Result>
</Test>

Die genaue Struktur des XML-Codes ist nicht wichtig, aber der einschließende Tag muss <Test> heißen, so dass er mit der Referenz im ESQL-Code übereinstimmt. Ist dies nicht der Fall, führen die ESQL-Anweisungen dazu, dass umschließende Tags auf der obersten Ebene erstellt werden, was in XML nicht gültig ist.

Wenn Sie eine Ausgabenachricht erstellen möchten, die alle Spalten aller Zeilen enthält, die eine bestimmte Bedingung erfüllen, verwenden Sie die SELECT-Anweisung mit einer WHERE-Klausel:

-- Declare and initialize a variable to hold the 
--      test vaue (in this case the surname Smith)
DECLARE CurrentCustomer STRING 'Smith';

-- Loop through table records to extract matching information
SET OutputRoot.XML.Invoice[] = 
    (SELECT R FROM Database.USERTABLE AS R
              WHERE R.Customer.LastName = CurrentCustomer
    );

Die Nachrichtenfelder werden in derselben Reihenfolge erstellt wie die Spalten in der Tabelle angezeigt werden.

Wenn Sie mit SQL in einer Datenbankumgebung vertraut sind, erwarten Sie möglicherweise, dass SELECT * codiert werden kann. Dies wird vom Broker nicht akzeptiert, da alle Verweise auf Spalten mit einem Korrelationsnamen beginnen müssen. Dadurch wird eine Mehrdeutigkeit bei deklarierten Variablen vermieden. Wenn Sie SELECT I.* codieren, wird dies vom Broker akzeptiert, '*' wird jedoch als erstes untergeordnetes Element und nicht als alle Element interpretiert, wie dies zu erwarten ist, wenn man von anderem SQL-Datenbankcode ausgeht.

Daten aus einer Tabelle in einem Datenbanksystem auswählen, bei dem die Groß-/Kleinschreibung beachtet werden muss

Wenn bei dem Datenbanksystem die Groß-/Kleinschreibung beachtet werden muss, müssen Sie eine andere Methode verwenden. Diese Methode ist auch erforderlich, wenn Sie den Namen des generierten Feldes ändern möchten:

SET OutputRoot = InputRoot;
SET OutputRoot.XML.Test.Result[] =
  (SELECT T.Column1 AS Column1, T.Column2 AS Column2
  FROM Database.USERTABLE AS T);

In diesem Beispiel wird dieselbe Nachricht wie im obigen Beispiel erstellt. Stellen Sie sicher, dass bei den Verweisen auf die Datenbankspalten (in diesem Beispiel 'T.Column1' und 'T.Column2') die Groß-/Kleinschreibung genau mit den Datenbankdefinitionen übereinstimmt. Ist dies nicht der Fall (z. B. wenn Sie 'T.COLUMN1' angeben), generiert der Broker einen Laufzeitfehler. Beachten Sie die Verwendung von Column1 und Column2 in der SELECT-Anweisung. Hier können Sie beliebige Werte verwenden, sie müssen im Gegensatz zu diesem Beispiel nicht mit den Namen der Spalten übereinstimmen, die Sie in der Datenbank definiert haben.

Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ak05810_