PASSTHRU-Anweisung

Die PASSTHRU-Anweisung bewertet einen Ausdruck und führt die resultierende Zeichenfolge als Datenbankanweisung aus.

SYNTAX

Verwendung

Hauptsächlich wird die PASSTHRU-Anweisung zur Ausgabe von Verwaltungsbefehlen an Datenbanken verwendet (z. B. zum Erstellen einer Tabelle).
Anmerkung: Mit der PASSTHRU-Anweisung sollten Sie keine gespeicherten Prozeduren aufrufen. Grund hierfür sind die Einschränkungen, denen die Anweisung unterliegt. (Sie können beispielsweise keine Ausgabeparameter verwenden.) Rufen Sie gespeicherte Prozeduren stattdessen mit der CALL-Anweisung auf.

Der erste Ausdruck wird bewertet, und anschließend wird die resultierende Zeichenfolge zur Ausführung an die Datenbank übermittelt, auf die die DatabaseReference (in der TO-Klausel) verweist. Wenn Sie keine TO-Klausel angeben, wird die Datenbank verwendet, auf die das Datenquellattribut des Knotens verweist.

Verwenden Sie Fragezeichen (?) in der Datenbankzeichenfolge, um Parameter anzugeben. Die Parameterwerte werden von der VALUES- Klausel geliefert.

Wenn die VALUES-Klausel angegeben ist, werden ihre Ausdrücke bewertet und als Parameter an die Datenbank übermittelt (d. h. ihre Werte werden an Stelle der Fragezeichen in der Datenbankanweisung eingesetzt).

Wenn nur ein VALUE-Ausdruck existiert, kann das Ergebnis u. U. eine Liste sein. Ist dies der Fall, werden die Fragezeichen mit den skalaren Werten der Liste ersetzt. Ist das Ergebnis keine Liste, wird das (einzelne) Fragezeichen mit dem einzelnen skalaren Wert in der Datenbankanweisung ersetzt. Wenn mehrere VALUE-Ausdrücke existieren, sollte die Bewertung der Ausdrücke keine Liste ergeben. Die Fragezeichen werden mit ihren skalaren Werten ersetzt.

Da die Datenbankanweisung vom Benutzerprogramm erstellt wird, müssen nicht zwingend Parameterkennzeichner (Fragezeichen) oder die VALUES-Klausel verwendet werden, da die Datenbankanweisung in ihrer Gesamtheit vom Programm als Literalzeichenfolge bereitgestellt werden könnte. Es wird jedoch empfohlen, möglichst Parameterkennzeichner zu verwenden, da dadurch die Anzahl unterschiedlicher Anweisungen verringert wird, die vorbereitet und in der Datenbank und im Broker gespeichert werden müssen.

Datenbankreferenz

Eine Datenbankreferenz ist ein Sonderfall der Feldreferenzen, mit dem auf Nachrichtenbaumstrukturen verwiesen wird. Sie besteht aus dem Wort "Database" (Datenbank), gefolgt vom Namen der Datenquelle (d. h. der Name einer Datenbankinstanz).

Sie können den Name der Datenquelle direkt oder durch einen Ausdruck in Klammern ({...}) angeben. Der direkt angegebene Name einer Datenquelle kann ersetzt werden. Das bedeutet, dass wenn der Name als bekannter Name deklariert wurde, nicht der Name selbst verwendet wird, sondern der Wert des deklarierten Namens (siehe DECLARE-Anweisung).

Fehler behandeln

Während der PASSTHRU-Vorgänge können Fehler auftreten, beispielsweise könnte die Datenbank nicht betriebsbereit oder die Anweisung könnte ungültig sein. In diesen Fällen wird eine Ausnahme ausgelöst (ausgenommen, die Knoteneigenschaft Ausnahme für Datenbankfehler ausgeben wurde auf FALSE gesetzt). Diese Ausnahmen richten die entsprechenden Wert für den SQL-Code, den Status, den systemeigenen Fehler und den Fehlertext ein und können von Fehlerbehandlungsprogrammen bearbeitet werden (siehe Anweisung DECLARE HANDLER).

Weitere Informationen zur Behandlung von Datenbankfehlern finden Sie unter Aufzeichnen des Datenbankstatus.

Beispiele

Im folgenden Beispiel wird die Tabelle "Customers" im Schema "Shop" in der Datenbank DSN1 erstellt:
PASSTHRU 'CREATE TABLE Shop.Customers (
  Kundennummer INTEGER,
  Vorname      VARCHAR(256),
  Nachname       VARCHAR(256),
  Straße         VARCHAR(256),
  Stadt           VARCHAR(256),
  Land        VARCHAR(256)
)' TO Database.DSN1;
Wenn, wie im letzten Beispiel, die ESQL-Anweisung als Zeichenfolgeliteral angegeben ist, müssen Sie sie in einfache Anführungszeichen setzen. Verwenden Sie keine Anführungszeichen, wenn sie als Variable angegeben ist. Beispiel:
SET myVar = 'SELECT * FROM user1.stocktable';
SET OutputRoot.XML.Data[] = PASSTHRU(myVar);
Im folgenden Beispiel wird die Tabelle "Customers" im Schema "Shop" in der Datenbank DSN1 "gelöscht":
PASSTHRU 'DROP TABLE Shop.Customers' TO Database.DSN1; 
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2005 Letzte Aktualisierung: Nov 17, 2005
ak05100_