4D v16.3

SQL EXECUTE

Home

 
4D v16.3
SQL
SQL EXECUTE

SQL EXECUTE 


 

SQL EXECUTE ( SQLAnweisung {; GebundObj}{; GebundObj2 ; ... ; GebundObjN} )  
Parameter Typ   Beschreibung
SQLAnweisung  Text in Auszuführender SQL Befehl
GebundObj  Variable, Feld in Empfängt Ergebnis (wenn erforderlich)

Der Befehl SQL EXECUTE führt einen SQL Befehl aus und verbindet das Ergebnis mit 4D Objekten (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 außer Acht.

Warnung: Übergeben Sie 4D Felder im Parameter GebundObj und führen den Befehl SELECT aus, werden immer die Daten der remote 4D Quelle geändert. Um Daten aus der remote Quelle lokal wiederzufinden, müssen Sie  intermediäre lokale Arrays verwenden und den Befehl INSERT aufrufen (siehe Beispiel 6).

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 Einführung in SQL Befehle.

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)

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

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

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

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

Sie wollen Daten, die in einer remote 4D Server Datenbank gespeichert sind, lokal wiederfinden. Dazu müssen Sie dazwischen gesetzte Arrays verwenden:

  // An die remote Datenbank anmelden
 SQL LOGIN("IP:192.168.18.15:19812";"Benutzer";"Kennwort";*)
 If(OK=1)
  // Ab hier werden alle SQL Anfragen auf der remote Datenbank gemacht
    C_TEXT($LastName_value// 4D Variable, die in der Suchanweisung verwendet wird
    ARRAY TEXT($a_LastName;0) // Temporäres Speichern der remote Werte für Nachname
    ARRAY TEXT($a_FirstName;0) // Temporäres Speichern der remote Werte für Vorname
    C_BOOLEAN($UseSQL//Auswahl der Art für lokales Speichern von Daten aus der remote Datenbank
  // (nur Demo)
 
    $LastName_value:="Smith" // Initialisierung der 4D Variable
 
  // Die Variable 4D $LastName_value dem ersten "?" in der SQL Anfrage zuordnen
    SQL SET PARAMETER($LastName_value;SQL param in)
 
  // Aus der remote Tabelle PERSONS die Werte der Felder LastName und FirstName finden
  // mit "LastName = Smith" und sie in den Arrays $a_LastName und $a_FirstName speichern
    SQL EXECUTE("SELECT LastName, FirstName FROM PERSONS WHERE LastName = ?";$a_LastName;$a_FirstName)
    If(Not(SQL End selection)) // Wird mindestens ein Datensatz gefunden
 
       SQL LOAD RECORD(SQL all records// Lädt alle Datensätze
 
       $UseSQL:=True // Wählt die Art, wie die Daten integriert werden (nur Demo)
 
       If($UseSQL// SQL Anfragen verwenden
          SQL LOGOUT // Von der remote Datenbank abmelden
          SQL LOGIN(SQL_INTERNAL;"user";"password") // An die lokale Datenbank anmelden
  // Ab hier werden alle SQL Anfragen in der lokalen Datenbank gemacht
  // Die Arrays $a_LastName und $a_FirstName in der lokalen Tabelle PERSONS sichern
          SQL EXECUTE("INSERT INTO PERSONS(LastName, FirstName) VALUES (:$a_LastName, :$a_FirstName);")
 
       Else // 4D Befehle verwenden
          For($i;1;Size of array($a_LastName))
             CREATE RECORD([PERSONS])
             [PERSONS]LastName:=$a_LastName{$i}
             [PERSONS]FirstName:=$a_FirstName{$i}
             SAVE RECORD([PERSONS])
          End for
       End if
    End if
    SQL LOGOUT // Die Verbindung schließen
 End if

Bei korrekt ausgeführtem Befehl hat die Systemvariable OK den Wert 1, sonst den Wert 0 (Null).



Siehe auch 

SQL LOAD RECORD

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: SQL
Nummer: 820

Dieser Befehl ändert die Systemvariable OK

 
GESCHICHTE 

Erstellt: 4D 2004

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)