4D v12.4

Einführung in SQL Befehle

Home

 
4D v12.4
SQL
Einführung in SQL Befehle

 

Einführung in SQL Befehle  


 

 

4D bietet eine integrierte SQL Engine. Das Programm enthält auch einen SQL Server, den andere 4D Anwendungen oder third-party Anwendungen über den 4D OBDC Treiber abfragen können.
Die verschiedenen Wege, um auf die 4D SQL Engine zuzugreifen, die Konfiguration des SQL Server sowie die Befehle und Schlüsselwörter für SQL Anfragen werden ausführlich im Handbuch 4D SQL Reference beschrieben.

Dieses Kapitel enthält verschiedene 4D Befehle zur Verwendung von SQL in 4D:

Die integrierten SQL Befehle beginnen mit der Vorsilbe SQL. Sie führen folgendes aus:

  • Sie können diese Befehle mit der 4D internen SQL Engine oder in einer externen Verbindung verwenden, die direkt oder via ODBC geöffnet wird. Über den Befehl SQL LOGIN können Sie die Art der zu öffnenden Verbindung angeben.
  • Die Reichweite einer Verbindung ist der Prozess. Wollen Sie mehrere gleichzeitige Verbindungen verwalten, müssen Sie mit dem Befehl SQL LOGIN einen Prozess starten.
  • Mit dem Befehl ON ERR CALL können Sie jeden ODBC Fehler abfangen, der während der Ausführung eines high-level SQL Befehls auftritt. Über den Befehl SQL GET LAST ERROR erhalten Sie zusätzliche Informationen.

Der ODBC Standard (Open DataBase Connectivity) spezifiziert eine Library mit standardisierten Funktionen. Damit kann eine Anwendung wie 4D via SQL Programmiersprache auf jedes ODBC-kompatible Datenmanagement-System, wie Datenbanken, Tabellenkalkulation, andere 4D Programme, etc. zugreifen.
4D ermöglicht auch, Daten in eine ODBC Quelle zu importieren bzw. daraus zu exportieren, entweder über die Befehle oder oder "manuell" im Designmodus. Weitere Informationen dazu finden Sie im Handbuch 4D Designmodus.

Hinweis: Die high-level SQL Befehle von 4D eignen sich für einfache Vorgehensweisen, über die 4D Anwendungen mit ODBC Datenquellen kommunizieren können. Für eine komplexere Unterstützung von ODBC Standards benötigen Sie 4D ODBC Pro,das “low level” ODBC Plug-In für 4D.

Nachfolgende Tabelle zeigt die Entsprechungen, die 4D automatisch zwischen 4D und SQL Datentypen herstellt:

4D TypSQL Typ
C_STRINGSQL_C_CHAR
C_TEXTSQL_C_CHAR
C_REALSQL_C_DOUBLE
C_DATESQL_C_TYPE_DATE
C_TIMESQL_C_TYPE_TIME
C_BOOLEANSQL_C_BIT
C_INTEGERSQL_C_SHORT
C_LONGINTSQL_C_SLONG
C_BLOBSQL_C_BINARY
C_PICTURESQL_C_BINARY
C_GRAPHSQL_C_BINARY

4D bietet zwei Wege, um 4D Ausdrücke (Variablen, Arrays, Felder, Zeiger, gültige Ausdrücke) in SQL Anfragen einzufügen: Direkte Assoziation und Parameter setzen über den Befehl SQL SET PARAMETER.

Bei der direkten Assoziation sind 2 Wege möglich:

  • Sie setzen den Namen des 4D Objekts im Anfragetext zwischen spitze Klammern
  • Sie setzen einen Doppelpunkt vor die Referenz:
 SQL EXECUTE("INSERT INTO emp (empnum,ename) VALUES (<<vEmpnum>>,<<vEname>>)")
 SQL EXECUTE("SELECT age FROM People WHERE name= :vName")
Hinweis: Im kompilierten Modus können Sie keine Referenzen auf lokale Variablen verwenden (mit vorangestellten Symbol $).

In diesen Beispielen ersetzen die aktuellen Werte der 4D Variablen vEmpnum, vEname und vName die Parameter, wenn die Anfrage ausgeführt wird. Das funktioniert auf dieselbe Art mit 4D Feldern und Arrays.

Diese einfache Syntax hat jedoch den Nachteil, dass sie nicht mit den SQL Standards im Einklang ist und keine Ausgabeparameter zulässt. Um dem abzuhelfen, verwenden Sie den Befehl SQL SET PARAMETER. Damit integrieren Sie jedes 4D Objekt in eine Anfrage und definieren seine Verwendungsart (Eingabe, Ausgabe oder beides). Auf diese Weise wird eine standardmäßige Syntax erstellt.

Beispiele

1. Dieses Beispiel führt eine SQL Anfrage aus, die direkt die zugewiesenen 4D Arrays verwendet:

 ARRAY TEXT(MyTextArray;10)
 ]ARRAY LONGINT(MyLongintArray;10)
 
 For(vCounter;1;Size of array(MyTextArray))
    MyTextArray{vCounter}:="Text"+String(vCounter)
    MyLongintArray{vCounter}:=vCounter
 End for
 SQL LOGIN("mysql";"root";"")
 SQLStmt:="insert into app_testTable (alpha_field, longint_field) VALUES (<<MyTextArray>>, <<MyLongintArray>>)"
 SQL EXECUTE(SQLStmt)

2. Dieses Beispiel führt eine SQL Anfrage aus, die direkt die zugewiesenen 4D Felder verwendet:

 ALL RECORDS([Table 2])
 SQL LOGIN("mysql";"root";"")
 SQLStmt:="insert into app_testTable (alpha_field, longint_field) VALUES (<<[Table 2]Field1>"+">,<<[Table 2]Field2>>)"
 SQL EXECUTE(SQLStmt)

3. Dieses Beispiel führt eine SQL Anfrage aus, die direkt Variableninhalt über einen dereferenzierten Zeiger übergibt:

 C_LONGINT($vLong)
 C_POINTER($vPointer)
 $vLong:=1
 $vPointer:=->$vLong
 SQL LOGIN("mysql";"root";"")
 SQLStmt:="SELECT Col1 FROM TEST WHERE Col1=:$vPointer";
 SQL EXECUTE(SQLStmt)

Im kompilierten Modus können Sie unter bestimmten Bedingungen in SQL Statements lokale Variablenreferenzen (mit vorangestelltem Zeichen $) verwenden:

  • Sie können lokale Variablen innerhalb einer Sequenz Begin SQL / End SQL einsetzen, außer für den Befehl EXECUTE IMMEDIATE;
  • Sie können lokale Variablen mit dem Befehl SQL EXECUTE einsetzen, wenn diese Variablen direkt im Parameter der SQL Anfrage und nicht über Referenzen verwendet werden.
    So funktioniert z.B. folgender Code im kompilierten Modus:
     SQL EXECUTE("select * from t1 into :$myvar") // funktioniert im kompilierten Modus

    während folgender Code einen Fehler im kompilierten Modus generiert:
     C_TEXT(tRequest)
     tRequest:="select * from t1 into :$myvar"
     SQL EXECUTE(tRequest// Fehler im kompilierten Modus

In 4D gibt es zwei Möglichkeiten, Werte in der 4D Programmiersprache wiederzufinden, die sich aus SQL Abfragen ergeben:

  • Über den zusätzlichen Parameter im Befehl SQL EXECUTE (empfohlene Lösung)
  • Über die INTO Klausel in der SQL Anfrage selbst (Alternativ-Lösung für spezifische Fälle)

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: SQL

 
SIEHE AUCH 

EXPORT ODBC
IMPORT ODBC