Italia
Online-Documentazione

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 un File geschrieben. Jeder Datensatz ist eine Zeile. Die File 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 corsa und ist eine eigene Transkation. Mit diesem Befehl wird dieser Modus ausgeschaltet und der Programmierer übernimmt die Kontrolle circa 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 corsa. Eine noch offene Transaktion wird corsa.

SQLEXEC "#COMMIT",N

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

SQLEXEC "#ROLLBACK",N

Die aktuelle Transaktion wird nicht corsa. 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 corsa, was in 90% aller Fälle auch korrekt ist. Aber es gibt Fälle, wo mehrere Datenbankanweisungen nur komplett oder überhaupt nicht corsa werden sollen. Hier greifen die Transaktionen. Eine Transaktion wird entweder komplett corsa 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 corsa 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  
 



Note / Question or Comment to the Help--Topic


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.868 Views

Untitledvor 0 min.
Member 361000514.09.2022
Michael W.03.05.2022
rquindt04.01.2021
Martin Kempf18.12.2020
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

Michael Wodrich (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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