SQLExecute (Funktion)
- Last UpdatedSep 24, 2024
- 3 minute read
Die Funktion SQLExecute führt eine zuvor vorbereitete SQL-Anweisung aus. Bei SELECT-Anweisungen gibt der Parameter BindList an, durch welche BindList die Spalten der Datenbank mit InTouch-Variablen zu verknüpfen sind. Wenn Bindeliste auf NULL gesetzt ist, werden keine Variablenverknüpfungen hergestellt.
Kategorie
SQL
Syntax
SQLExecute(VerbindungsID,Bindeliste,AnweisungsID);
Argumente
VerbindungsID
Eine Variable vom Typ „Speicher Integer“, die die Nummer (ID) enthält, die jeder neuen Datenbankverbindung von der Funktion SQLConnect() zugewiesen wird.
Bindeliste
Beim BindList-Parameter kann es sich um eine Zeichenfolge mit der Länge Null handeln. Wenn StatementID mit einer Abfrage verbunden ist, die Zeilen zurückgibt, wird die logische Tabelle mit dem Ergebnis von SQLExecute() aktualisiert. Wenn Sie eine Bindeliste angeben, wird das Ergebnis mit dieser verknüpft. Ein Bindeliste-Parameter mit der Länge Null ist nützlich, wenn bereits im Voraus bekannt ist, dass StatementID nicht mit einer Anweisung verbunden ist, die Zeilen zurückgibt.
AnweisungsID
Integer-Wert, der von SQL zurückgegeben wird, wenn die Funktion SQLPrepareStatement() verwendet wird.
Anmerkungen
Fehler werden ggf. mit dem Funktionsergebnis zurückgegeben. Wenn die Anweisung besteht, d. h. „vorbereitet“ wurde, übergeben Sie als StatementID die von der Prepare-Funktion zurückgegebene Anweisungsreferenz. Besteht die Anweisung nicht, sollte AnweisungsID auf Null (0) gesetzt werden.
Hinweis: Für nicht vorbereitete Anweisungen kann die Funktion SQLExecute() nur einmal aufgerufen werden. Bestehende, d. h. vorbereitete, Anweisungen können dagegen wiederholt aufgerufen werden.
Eine Standardanweisung ist mit einer connectionID verknüpft. Es kann sich dabei um eine textbasierte SQL-Anweisung (SELECT, INSERT, DELETE oder UPDATE), den Namen einer Abfrage aus MS Access (mit oder ohne Parameter) oder den Namen einer gespeicherten Prozedur in SQL Server (mit oder ohne Parameter) handeln.
Die Standardanweisung wird von den Funktionen SQLLoadStatement(), SQLSetStatement() und SQLAppendStatement() festgelegt. Sie wird von der Funktion SQLExecute() verwendet, wenn der Parameter StatementID auf 0 gesetzt wird.
Beispiele
Das folgende Beispiel lädt die SQL-Anweisungen aus der Datei postenabfrage.sql und schreibt die Ergebnisse der darin enthaltenen SELECT-Abfrage in die InTouch-Variablen, die in der angegebenen Bindeliste definiert sind.
Ergebnis = SQLLoadStatement (VerbindungsID, "c:\meinprojverz\postenabfrage.sql");
Ergebnis = SQLExecute(VerbindungsID, "Bindeliste", 0);
Ergebnis = SQLNext (VerbindungsID);
Für komplexe Abfragen und Textausdrücke mit mehr als 131 Zeichen können Sie die Funktion SQLSetStatement() verwenden. Wenn der Zeichenfolgen-Ausdruck länger als 131 Zeichen ist, müssen Sie die Funktion SQLAppend() verwenden.
SQLSetStatement(VerbindungsID, "SELECT Geschwindigkeit, Ser_Nr FROM Tabellenname WHERE Ser_Nr ='" + Seriennummer_Eingabe + "'");
SQLExecute(VerbindungsID, "Bindeliste", 0);
Im oben stehenden Beispiel ist der Parameter StatementID auf Null gesetzt, damit die Anweisung direkt und ohne Verwendung von SQLPrepareStatement(Connection_Id, StatementID) ausgeführt werden kann.
Da keine StatementID-Referenz zur korrekten Beendigung dieser SELECT-Auswahl erstellt wurde, verwenden Sie die Funktion SQLEnd() anstatt SQLClearStatement().
SQLSetStatement(Verbindungs_ID, "SELECT Geschwindigkeit, Ser_Nr FROM Tabellenname WHERE Ser_Nr ='" + Seriennummer_Eingabe + "'");
SQLPrepareStatement(VerbindungsID, AnweisungsID);
SQLExecute(VerbindungsID, AnweisungsID);
Im oben stehenden Beispiel wird die Anweisungsreferenz von SQLPrepareStatement() erstellt und in der Funktion SQLExecute() verwendet. Nach Abschluss der Anweisung verwenden Sie die Funktion SQLClearStatement(), um die belegten Ressourcen und die Referenz wieder freizugeben.
Die Funktion SQLExecute() unterstützt die Ausführung einiger gespeicherter Prozeduren. Nehmen wir beispielsweise an, Sie erstellen auf dem Datenbank-Server eine gespeicherte Prozedur namens „LotInfoProc“ mit folgender SELECT-Anweisung: "SELECT PostenNr, PostenName FROM PostenInfo".
Wie Sie die gespeicherte Prozedur aus Ihrem InTouch-Skript aufrufen, hängt von der verwendeten Datenbank ab. Das folgende Beispiel zeigt den Aufruf einer gespeicherten Prozedur in einer SQL Server-Datenbank.
Ergebnis = SQLSetStatement (VerbindungsID,"PostenInfoProz");
ErgebnisCode = SQLExecute(VerbindungsID, "BindeListe", 0);
Ergebnis = SQLNext (VerbindungsID);
{Ergebnisse von SELECT abrufen}
Das folgende Beispiel zeigt den Aufruf einer gespeicherten Prozedur in einer Oracle-Datenbank.
Ergebnis = SQLSetStatement (VerbindungsID, "{CALL PostenInfoProz }");
ErgebnisCode = SQLExecute(VerbindungsID, "BindeListe", 0);
Ergebnis = SQLNext (VerbindungsID);
{Ergebnisse von SELECT abrufen}
Siehe auch
SQLConnect(), SQLPrepareStatement()