XML-Dokumente für
Message-Protokoll XML SQL-Format definieren
Sie können eine oder mehrere Datenbanktabellen durch eine XI-Message verändert. Abhängig vom Inhalt der Message-Payload können Sie Daten in Datenbanktabellen einfügen (INSERT), verändern (UPDATE) oder löschen (DELETE).
Im synchronen Fall können Sie auch Ergebnisse von Abfragen (SELECT) als XML-Format in der Rückantwort mitgeben.
Mit EXECUTE führen Sie Stored-Procedures aus und mit SQL-QUERY können Sie komplexere SQL-Anweisungen über den Adapter an die Datenbank weiterleiten.
<root>
<StatementName1>
<dbTableName action=”ACTION>
<table>realDbTableName</table>
<access>
<col1>val1</col1>
<col2>val2</col2>
</access>
<key1>
<col2>val2old</col2>
<col4>val4</col4>
</key1>
<key2>
<col2>val2old2</col2>
</key2>
</dbTableName>
</StatementName1>
<StatementName2>
...
...
</StatementName2>
...
</root>
...
...
1. Definieren Sie ein Mapping, das die Payload einer XI-Message in die gewünscht XML-Struktur umwandelt.
1. Legen Sie ein Tag <root>fest. Der Name des Tags ist frei wählbar.
2. Unter dem Tag <root> können Sie ein oder mehrere Statements definieren.
Die Namen der Tags für Statements sind frei wählbar.
Jedes Statement enthält die Beschreibung einer Datenbankaktion.
Mit Ausnahme der Ausführungsbeschreibung für eine Stored Procedure verwenden Sie für alle Statements eine gemeinsame Struktur.
3. Geben Sie den Namen der Datenbanktabellen im Element unterhalb des Statement-Elements (dbTableName) und das Attribut action mit dem Wert UPDATE, INSERT, UPDATE_INSERT, DELETE, SELECT, EXECUTE oder SQL-QUERY an.
4. Wird das optionale Element <table> verwendet, wird der angegebene Wert als Datenbanktabellenname verwendet.
Ändern Sie den Namen des Tags nicht. <table> muss das erste Element des Blocks innerhalb von <dbTableName> sein.
Mit dieser Angabe können Sie beispielsweise Tabellennamen definieren, die nicht XML-konforme Zeichen enthalten oder Zeichen enthalten, die in Interface-Definitionen des Integration Builder nicht verwendet werden dürfen.
5. Auf der nächsten Ebene gibt es (außer bei der Action DELETE) ein Element mit Namen access und ein oder mehrere Elemente mit frei wählbaren Namen. Im Beispiel oben heißen sie keyN.
○ Geben Sie das Element access als erstes an und definieren Sie hier die Tabellenspalten, auf die zugegriffen werden soll.
Ändern Sie den Namen des Tags nicht.
○ Verwenden Sie die <key>-Elemente, um die Bedingung für den Zugriff auf die Tabellenspalten zu beschreiben.
6. Definieren Sie ein oder mehrere Anweisungen, um Datenbanktabellen zu bearbeiten:
○ UPDATE_INSERT-Anweisung definieren
○ EXECUTE-Anweisung definieren
○ SQL_QUERY-Anweisung definieren
1. Sie können in den <key>-Elementen optional die folgenden Attribute setzen:
○ compareOperation= <compareType>
Setzen Sie mit diesem Attribut die logische Vergleichsoperation für das jeweilige Element. Erlaubte Werte sind:
■ EQ: Gleichheit (Vorgabewert)
■ NEQ: Ungleichheit
■ LT: Kleiner
■ LTEQ: Kleiner oder gleich
■ GT: Größer
■ GTEQ: Größer oder gleich
■ LIKE: Gleichartigkeit (von Strings). Im zugehörigen Wert können hier dann auch die SQL-Platzhalter „%“ bzw. „_“ verwendet werden.
Sie können den Parameter beispielsweise so einsetzen:
<key1>
<col2 compareOperation=”NEQ”>val2old</col2>
<col4 compareOperation=”LIKE”>val%</col4>
</key1>
“
SELECT col1,col2,col3 FROM dbTableName WHERE ((col2<>’val2old’ ANDcol4 LIKE ’val%’) OR (col2=’val2old2’))
“
○ hasQuot= YES|NO
Beim Aufbau der WHERE-Bedingung des SQL-Statements wird als Vorgabe aufgrund des Tabellenspaltentyps entschieden, ob die Werte in Hochkomma (textartige Spaltentypen) oder nicht in Hochkommata (numerische Spaltentypen) gesetzt werden. In seltenen Fällen (z.B. bei der Verwendung von Funktionen) müssen Sie diese Verhalten eventuell übersteuern.
■ Setzen Sie YES , um immer Hochkomma zu setzen
■ Setzen Sie NO , um niemals Hochkomma um Werte mit diesem Attribut in der SQL-Syntax zu setzen.
○ isNull= TRUE
Werte mit diesem Attribut werden beim Aufbau der WHERE-Bedingung ignoriert. Dieses Attribut hat die gleiche Wirkung, als ob der zugehörige Wert nicht vorhanden sei.
Antwortdokumente können nur bei synchronem Aufruf vom Integration Server oder der AEX ausgewertet werden, da im asynchronen Fall der Inhalt des Antwortdokuments nicht mehr zugänglich ist.
Die Antwort wird für jedes Statement-Element in einem eigenen Element <StatementName_response> abgelegt.
Die Struktur der Antwortdokumente ist in den Beschreibungen der Statements enthalten.