Version 2004
SQL EXECUTE (SQLAnweisung{; GebundObj}{; GebundObj2; ...; GebundObjN})
Parameter | Typ | Beschreibung | |
SQLAnweisung | Text | Auszuführender SQL Befehl | |
GebundObj | Variable | Feld | Empfängt Ergebnis (wenn erforderlich) |
Beschreibung
Mit dem Befehl SQL EXECUTE können Sie einen SQL Befehl ausführen und das Ergebnis mit 4D Objekten verbinden (Arrays, Variablen oder Felder).
Der Befehl wird nur ausgeführt, wenn der aktuelle Prozess eine gültige Verbindung enthält.
Der Parameter SQLAnweisung enthält den auszuführenden SQL Befehl, GebundObj empfängt das Ergebnis.
Variablen werden in der Reihenfolge der Spalten gebunden, d.h. verbleibende Spalten der SQL Anweisung ohne zugeordnete Variablen bleiben ausser Acht.
Werden in GebundObj als Parameter 4D Felder übergeben, erstellt der Befehl Datensätze und sichert sie automatisch.
4D Felder müssen aus derselben Tabelle stammen. Sie können nicht im gleichen Aufruf ein Feld aus Tabelle 1, ein weiteres Feld aus Tabelle 2 übergeben. In diesem Fall wird ein Fehler generiert.
Übergeben Sie in GebundObj 4D Arrays oder Variablen, sollten Sie diese vor Aufruf des Befehls deklarieren, um den Typ der bearbeiteten Daten zu überprüfen. Arrays werden bei Bedarf automatisch angepasst.
Mit einer 4D Variablen wird zur selben Zeit ein Datensatz geholt. Andere Ergebnisse werden ignoriert.
Weitere Informationen dazu finden Sie im Abschnitt SQL Befehle.
Beispiele
(1) In diesem Beispiel erhalten wir die Spalte ename der Tabelle emp der Datenquelle. Das Ergebnis wird gespeichert in der 4D Tabelle [employee]Name. 4D Datensätze werden automatisch angelegt:
SQLStmt:="SELECT ename FROM emp" SQL EXECUTE(SQLStmt;[Employee]Name) SQL LOAD RECORD(SQL All Records)
(2) Um die Erstellung von Datensätzen zu prüfen, können Sie Code in eine Transaktion setzen und nur dann bestätigen, wenn die Operation zu einem zufriedenstellenden Ergebnis führt:
SQL LOGIN("mysql";"root";"") SQLStmt:="SELECT alpha_field FROM app_testTable" START TRANSACTION SQL EXECUTE(SQLStmt;[Table 2]Field1) While(Not(SQL End Selection)) SQL LOAD RECORD ... `Setze hier Code zur Bestätigung der Daten End while VALIDATE TRANSACTION `Transaktion bestätigen
(3) In diesem Beispiel erhalten wir die Spalte ename der Tabelle emp der Datenquelle. Das Ergebnis wird gespeichert im Array aName. Wir holen Datensätze in 10er Schritten.
ARRAY STRING(30;aName;20) SQLStmt:="SELECT ename FROM emp" SQL EXECUTE(SQLStmt;aName) While(Not(SQL End Selection)) SQL LOAD RECORD(10) End while
(4) In diesem Beispiel erhalten wir die Spalten ename und job der Tabelle emp für eine spezifische ID (WHERE Klausel) der Datenquelle. Das Ergebnis wird gespeichert in den 4D Variablen vName und vJob. Es wird nur der erste Datensatz erwartet.
SQLStmt:="SELECT ename, job FROM emp WHERE id = 3" SQL EXECUTE(SQLStmt;vName;vJob) SQL LOAD RECORD
(5) In diesem Beispiel erhalten wir die Spalte Blob_Field der Tabelle Test in der Datenquelle. Das Ergebnis wird gespeichert in einer BLOB Variable, deren Wert bei jedem Laden eines Datensatzes aktualisiert wird
C_BLOB(MyBlob) SQL LOGIN SQL EXECUTE("SELECT Champ_Blob FROM Test";MyBlob) While(Not(SQL End selection)) `Wir sichten die Ergebnisse SQL LOAD RECORD `Der Wert von MyBlob wird bei jedem Aufruf aktualisiert. End while
Referenz
Systemvariablen oder Mengen
Bei korrekt ausgeführtem Befehl hat die Systemvariable OK den Wert 1, sonst den Wert 0 (Null).