Show TOC Anfang des Inhaltsbereichs

Vorgehensweisen SQL_QUERY-Anweisung definieren  Dokument im Navigationsbaum lokalisieren

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'

Ende des Inhaltsbereichs