Der FoxPro-Kompatible Skriptinterpreter
🔎
Newsletter
Der FoxPro-Kompatible Skriptinterpreter

sqlexec

sqlexec(SqlHandle AS Integer, [CommandText AS String, AliasName AS String, OutCountinfoArray AS Array@]) AS Integer


Sendet eine Anweisung an eine Datenquelle.

Parameter SqlHandle

Es muss ein gültiges SqlHandle angegeben werden. SqlHandles können mit der sqlconnect-Funktion oder der sqlstringconnect-Funktion erstellt werden.

Parameter CommandText

Hier wird der Anweisungstext angegeben der an die Datenquelle gesendet werden soll. Falls das SqlHandle mit der sqlprepare-Funktion vorbereitet wurde, muss kein Abfragetext mehr angegeben werden.

Parameter AliasName

Mit diesem Parameter kann der Aliasname festgelegt werden unter dem das Ergebnis in der aktiven Datensitzung abgespeichert wird. Der Standardaliasname, falls keiner angegeben wird, lautet "sqlresult". Falls bereits ein Alias mit dieser Bezeichnung existiert, wird der vorhandene Arbeitsbereich automatisch geschlossen.

Parameter OutCountinfoArray

Ein Array kann per Referenz übergeben werden um die Information abzurufen, wie viele Datensätze betroffen sind. Wenn mehrere Abfragen an die Datenquelle gesendet werden, enthält das Array mehrere Zeilen. Die folgende Tabelle zeigt die in dem Array enthaltenen Spalten.

Spalte
Typ
Inhalt
1 String
Aliasname unter dem das Ergebnis abgespeichert wurde
2 Integer
Anzahl der betroffenen Datensätze einer Anweisung

Rückgabewert

Der Rückgabewert ist entweder eine positive ganze Zahl, die anzeigt, wie viel Ergebnisse produziert wurden, oder -1, wenn ein Fehler aufgetreten ist. Genauere Information zu dem Fehler können mit der aerror-Funktion abgefragt werden.

Abfragen die mehr als ein Ergebnis produzieren

Einige Datenquellen erlauben es Anweisungen zu formulieren, die mehr als ein Ergebnis produzieren. In diesen Fällen zeigt der Rückgabewert der sqlexec-Funktion an, wie viele Ergebnisse produziert wurden. Die sqlexec-Funktion stellt standardmäßig alle Ergebnisse automatisch bereit. Dazu wird der angegebene Aliasname mit einer fortlaufenden Nummer, zum Beispiel auf "sqlresult2", erweitert.

Daten aus einer ODBC-Datenquelle ausgeben

Das folgende Beispiel sendet eine SQL-Anweisung an eine ODBC-Datenquelle und zeigt das Ergebnis anschließend auf dem Bildschirm an.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
LOCAL handle, retVal, err[1]
handle = sqlconnect("odbc_data_source_name")
retVal = sqlexec(handle, "SELECT field1, field2 FROM table1")

IF retVal < 0
  * Ausgeben der Fehlermeldung auf dem Bildschirm
  * falls ein Fehler aufgetreten ist (retVal<0)
  aerror(err)
  ? "Fehler:", err[3]
  RETURN .F.
ENDIF

* Nacheinander Ausgeben der Felder feld1 und feld2
* aller Datensätze der Tabelle table1
SELECT sqlresult
SCAN
  ? field1, field2
ENDSCAN

sqldisconnect(handle)

Datenabfragen mit Parametern

Um eine Datenbankabfrage mit Parametern auszuführen muss im Anweisungstext ein Fragezeichen, gefolgt von einem FoxPro-Ausdruck, angegeben werden. Das folgende Beispiel zeigt, wie in einer Abfrage FoxPro-Ausdrücke verwendet werden können.

  1
  2
  3
  4
  5
  6
LOCAL firstName, lastName
firstName = "Max"
lastName = "Mustermann"
* Datenbankabfrage senden und die Parmeter firstName
* und lastName verwenden.
sqlexec(handle, "SELECT * FROM person WHERE firstName= ?firstName AND lastName= ?lastName")