Einführung in SQL Befehle

4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 11.3 (Geändert)


4D bietet ab Version 11 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:

SQL Server steuern: START SQL SERVER und STOP SQL SERVER

Direkt auf die integrierte SQL Engine zugreifen: SET FIELD VALUE NULL, Is Field Value Null, QUERY BY SQL.

Verbindungen an externe oder interne Datenquellen (SQL pass-through) verwalten: GET DATA SOURCE LIST, Get current data source, SQL LOGIN, SQL LOGOUT.

High-level Befehle, um Daten im Rahmen direkter SQL Verbindungen oder via ODBC zu verwalten: Begin SQL, End SQL, SQL CANCEL LOAD, SQL LOAD RECORD, SQL EXECUTE, SQL EXPORT, SQL End of selection, SQL SET OPTION, SQL SET PARAMETER, SQL IMPORT, SQL GET LAST ERROR, SQL GET OPTION.

Arbeitsweise der high-level SQL Befehle

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 SQL CANCEL LOAD können Sie mehrere SELECT-Anfragen in derselben Verbindung ausführen.

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.

Unterstützung von ODBC Standard

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, im Designmodus Daten in eine ODBC Quelle zu importieren bzw. daraus zu exportieren. 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.

Entsprechung der Datentypen

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

Referenz auf 4D Ausdrücke in SQL Anfragen setzen

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:

   SQL EXECUTE("INSERT INTO emp (empnum,ename) VALUES (<<vEmpnum>>,<<vEname>>)

Sie setzen einen Doppelpunkt vor die Referenz:

   SQL EXECUTE("SELECT age from People WHERE name= :vName"

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 BefehlSQL 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. Weitere Informationen dazu finden Sie unter dem Befehl SQL SET PARAMETER.

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)


Werte in 4D wiederfinden

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)


4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next