Show TOC

SQL_QUERY-Anweisung definierenLocate this document in the navigation structure

Verwendung

Verwenden Sie dieses Statement, um komplexere SQL-Anweisungen direkt über den Adapter an die Datenbank zu übergeben. Optional können Sie in diesen SQL-Anweisungen Platzhalter vorsehen, die im Key-Block aufgelistet werden können.

So haben Sie die Möglichkeit, auch komplexe, parametrisierbare SQL-Statements zu erzeugen.

Format der SQL_QUERY-Anweisung

<root>

<StatementName>

<anyName action=" SQL_QUERY" | "SQL_DML">

<access>SQL-String with optional placeholder(s)</access>

<key>

<placeholder1>value1</placeholder1>

<placeholder2>value2<placeholder2>

</key>

</anyName >

</StatementName>

</root>

Vorgehensweise
  1. Geben Sie einen beliebigen Namen für die Struktur an.

    Es wird nicht standardmäßig ein Tabellen- oder Stored Procedure-Name erwartet wie bei den übrigen Statement-Typen.

  2. Wählen Sie action=SQL_QUERY, wenn das SQL Statement eine Query-Abfrage an die Datenbank darstellt (SELECT).

    Wählen Sie action=SQL_DML, wenn es sich um einen Aufruf aus der SQL Data Manipulation Language handelt (UPDATE, INSERT, DELETE).

  3. Geben Sie als erstes das Element <access> zwingend an.

    Der Inhalt von <access> stellt einen gültigen SQL-Aufruf für den jeweiligen Modus dar, optional mit Platzhaltern.

    • Wenn Sie Platzhalter verwenden, listen Sie sie innerhalb des Elements <key> auf.

      Die Namen der Platzhalter-Elemente müssen identisch mit denen im SQL-String verwendeten Namen sein, wobei sie im SQL-String noch mit $ Zeichen markiert werden.

      In der XML-Struktur oben würden also im SQL-String enthaltene Strings $placeholder1$ und $placeholder2$ durch value1 oder value2 ersetzt, bevor das SQL-Statement ausgeführt wird.

    • Wenn Sie keine Platzhalter verwenden, können Sie das Element <key> weglassen oder leer setzen.

      In beiden Fällen dürfen Sie in der Konfiguration das Feld Key-Tags erforderlich nicht auswählen, da es sonst zu einem Laufzeitfehler kommt.

      Der Einsatz von Platzhaltern beschränkt sich nicht auf einzelne Feldwerte, Sie können beliebige Teile des SQL-Statements auf diese Art setzten. Sie können auch die Logik des Statements beeinflussen.

      Überzählige und undefinierte Platzhalter im Element <key> werden toleriert. Undefinierte Platzhalter werden im SQL-String unverändert gelassen. Dies kann zu einem Syntax-Fehler oder zu unerwarteten Ergebnissen in der Datenbank führen.

Ergebnis

Das folgende Beispiel enthält keine Platzhalter:

<root>

<stmt>

<Customers action="SQL_DML">

<access> UPDATE Customers SET CompanyName='Firma', Address='Strasse 3' WHERE CustomerID='FI'

</access>

</Customers>

</stmt>

</root>

In der Datenbank wird das unveränderte SQL-Statement ausgeführt:

UPDATE Customers SET CompanyName='Firma', Address='Strasse 3' WHERE CustomerID='FI'

Das folgende Beispiel enthält Platzhalter:

<root>

<stmt>

<Customers action="SQL_DML">

<access> UPDATE Customers SET CompanyName='$NAME$', Address='$ADDRESS$' WHERE CustomerID='$KEYFIELD$'

</access>

<key>

<NAME>Firma</NAME>

<ADDRESS>Strasse 3 </ADDRESS>

<KEYFIELD>FI</KEYFIELD>

</key>

</Customers>

</stmt>

</root>

In der Datenbank wird nach Ersetzung der Platzhalter das gleiche SQL-Statement wie oben ausgeführt:

UPDATE Customers SET CompanyName='Firma', Address='Strasse 3' WHERE CustomerID='FI'