Deutsch
Online-Dokumentation

sqlexec Prozedur: Datenbank, DBase, SQL

 

Michael
Wodrich
Sendet einen SQL-Befehl an die Datenbank. P:S1 ist das SQL-Statement und P:I2 der Ergebnismodus.

Der SQL-Befehl wird normalerweise an den SQL-Treiber geschickt, es gibt jedoch Ausnahmen: Zusatzbefehle, die mit "#" beginnen. Diese Zusatzbefehle sind weiter unten beschrieben.

Ergebnismodus:
0- Das Ergebnis wird angezeigt. Jeder Datensatz ist eine Zeile.
1- Das Ergebnis wird in die Listbox-Liste geschrieben und kann dann z.B. mit der @LISTBOX$-Funktion betrachtet werden. Jeder Datensatz ist ein Eintrag in der Liste und kann maximal 32767 Zeichen enthalten; maximal 32767 Datensätze passen in die Liste.
2- Das Ergebnis wird in eine Datei geschrieben. Jeder Datensatz ist eine Zeile. Die Datei wird mit Set("SQLFile",... festgelegt. Wird kein Dateiname bestimmt, wird "SQL.DAT" im aktuellen Verzeichnis genommen.

In LINKS:[SQLCount] wird zurückgeliefert, wieviele Datensätze bearbeitet wurden oder -1, wenn ein Fehler auftrat.

Bei SQLExec können ab XProfan 9 direkt Variablen, wie in embedded SQL bei C++ bzw. Java, eingesetzt werden. Einfach einen Doppelpunkt vor die Variable:

SQLExec "SELECT * FROM tabelle WHERE name = :Name$ AND gehalt > :Gehalt%", 1

Wenn Name$ = "Hugo" und Gehalt% = 1200 macht XProfan daraus nun automatisch folgende Zeile:

SQLExec "SELECT * FROM tabelle WHERE name = 'Hugo' AND gehalt > 1200", 1

Es können einfache Variablen ($ % & !) eingesetzt werden, sowie einfache Objekteigenschaften bzw. Strukturelemente. Arrays und Ausdrücke sind nicht erlaubt.

Hier ein kleines Beispielprogramm:

Declare db&, sql$, artikel$, nummer%, preis!
Cls
artikel$ = "Handbuch"
nummer% = 23
preis! = 1.99
db& = @SQLInit("DSN=dBase-Dateien")
If db& > 0
SQLExec "INSERT INTO ueb VALUES (:nummer%,:artikel$,:preis!)",0
SQLExec "SELECT * FROM ueb",0
Else
Print "Datenbank konnte nicht geöffnet werden!"
EndIf
WaitInput
End

Mit einem "#" werden einige Zusatzbefehle eingeleitet:

SQLEXEC "#AUTOCOMMIT_OFF",N

Normalerweise wird jeder SQL-Befehl sofort ausgeführt und ist eine eigene Transkation. Mit diesem Befehl wird dieser Modus ausgeschaltet und der Programmierer übernimmt die Kontrolle über die Transaktionen. Mit diesem Befehl beginnt automatisch eine neue Transaktion. Diese währt bis zu einem der drei folgenden Befehle oder bis zu LINK:[SQLDone].

SQLEXEC "#AUTOCOMMIT_ON",N

Der ursprüngliche Modus wird wieder eingestellt: Jeder SQL-Befehl wird sofort ausgeführt. Eine noch offene Transaktion wird ausgeführt.

SQLEXEC "#COMMIT",N

Die aktuelle Transaktion wird ausgeführt und automatisch eine neue begonnen. Sollte die Transaktion nicht komplett ausgeführt werden können, erfolgt automatisch ein ROLLBACK.

SQLEXEC "#ROLLBACK",N

Die aktuelle Transaktion wird nicht ausgeführt. Alle SQL-Befehle seit dem Beginn der Transaktion werden ignoriert. Eine neue Transaktion wird begonnen.

Normalerweise wird unter ODBC jeder SQL-Befehl sofort und endgültig ausgeführt, was in 90% aller Fälle auch korrekt ist. Aber es gibt Fälle, wo mehrere Datenbankanweisungen nur komplett oder überhaupt nicht ausgeführt werden sollen. Hier greifen die Transaktionen. Eine Transaktion wird entweder komplett ausgeführt oder gar nicht.

Im Normalzustand (AUTOCOMMIT_ON) ist jeder SQL-Befehl eine eigene Transaktion. mit AUTOCOMMIT_OFF kann man dies abschalten. Alle folgenden Befehle sind nun eine Transaktion, bis sie mit einem "COMMIT" bestätigt und endgültig ausgeführt werden oder mit "ROLLBACK" verworfen werden. Alle Änderungen in den Datentabellen vor "COMMIT" sind nur temporär und werden im Falle eines "ROLLBACK" wieder zurückgenommen.

Nach COMMIT oder ROLLBACK beginnt eine neue Transaktion. Mit AUTOCOMMIT_ON wird das ursprüngliche Verhalten wieder eingeschaltet. Ist zu diesem Zeitpunkt noch eine Transaktion offen wird sie mit dem nächsten SQL-Befehl beendet. Auch SQLDONE beendet etwaige offene Transaktionen.

Sollte während einer Transaktion ein schwerer Fehler auftreten (Client-Rechner stürzt ab, SQL-Verbindung zum Server bricht ab, etc.), führt die Datenbank in aller Regel ein automatisches ROLLBACK durch. Ab XProfan9 können Variablen im SQL-String eingesetzt werden.
Profan-Arrays und Ausdrücke sind nicht erlaubt.
 
Programmieren, das spannendste Detektivspiel der Welt.
11.05.2005  
 



Hinweis/ Anmerkung/ Frage zum Hilfethema


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.863 Betrachtungen

Unbenanntvor 0 min.
Member 361000514.09.2022
Michael W.03.05.2022
rquindt04.01.2021
Martin Kempf18.12.2020
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

Michael Wodrich (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie