| |
|
|
Michael Wodrich | Sendet una SQL-Befehl a el Datenbank. P:S1 es el SQL-Statement y P:I2 el Ergebnismodus.
Der SQL-Befehl se normalerweise a el SQL-Treiber geschickt, lo son sin embargo Ausnahmen: Zusatzbefehle, el con "#" beginnen. Diese Zusatzbefehle son más unten beschrieben.
Ergebnismodus:
0 | - Das Ergebnis se adecuado. Jeder Datensatz es una Línea. | 1 | - Das Ergebnis se en el Listbox-Liste geschrieben y kann entonces z.B. con el @LISTBOX$-Función betrachtet voluntad. Jeder Datensatz es una Eintrag en el Liste y kann máximo 32767 Signo enthalten; máximo 32767 Datensätze passen en el Liste. | 2 | - Das Ergebnis se en un Expediente geschrieben. Jeder Datensatz es una Línea. El Expediente es con Conjunto("SQLFile",... festgelegt. Wird kein Dateiname determinado, se "SQL.DAT" en el aktuellen Directorio genommen. |
In LINKS:[SQLCount] se zurückgeliefert, wieviele Datensätze bearbeitet fueron oder -1, si una Fehler auftrat.
En SQLExec puede de XProfan 9 direkt Variables, como en embedded SQL en C++ o. Java, eingesetzt voluntad. Einfach una Doppelpunkt antes el Variable:
SQLExec "SELECT * FROM tabelle WHERE name = :Name$ AND gehalt > :Gehalt%", 1
Wenn Name$ = "Hugo" y Gehalt% = 1200 macht XProfan lo nun automáticamente folgende Línea:
SQLExec "SELECT * FROM tabelle WHERE name = 'Hugo' AND gehalt > 1200", 1
Lo puede einfache Variables ($ % & !) eingesetzt voluntad, sowie einfache Objekteigenschaften o. Strukturelemente. Arrays y Ausdrücke son no erlaubt.
Hier una kleines Beispielprogramm:
Declarar 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 Más Imprimir "Datenbank podría no geöffnet voluntad!" EndIf WaitInput End
Mit una "#" voluntad algunos Zusatzbefehle eingeleitet:
SQLEXEC "#AUTOCOMMIT_OFF",N
Normalerweise se cada SQL-Befehl inmediatamente ausgeführt y es una propio Transkation. Mit diesem Befehl se dieser Modus ausgeschaltet y Programmierer übernimmt el Kontrolle en Transaktionen. Mit diesem Befehl beginnt automáticamente una neue Transaktion. Diese währt a a una el drei folgenden Befehle oder a a LINK:[SQLDone].
SQLEXEC "#AUTOCOMMIT_ON",N
Der ursprüngliche Modus se otra vez eingestellt: Jeder SQL-Befehl se inmediatamente ausgeführt. Un todavía offene Transaktion se ausgeführt.
SQLEXEC "#COMMIT",N
El aktuelle Transaktion se ausgeführt y automáticamente una neue comenzó. Sollte el Transaktion no komplett ausgeführt voluntad puede, es automáticamente una ROLLBACK.
SQLEXEC "#ROLLBACK",N
El aktuelle Transaktion no es ausgeführt. Alle SQL-Befehle seit el Beginn el Transaktion voluntad ignoriert. Un neue Transaktion se comenzó.
Normalerweise se bajo ODBC cada SQL-Befehl inmediatamente y endgültig ausgeführt, qué en 90% aller Fälle auch korrekt es. Aber lo son Fälle, wo mehrere Datenbankanweisungen sólo komplett oder überhaupt no ausgeführt voluntad debería. Hier greifen el Transaktionen. Un Transaktion se entweder komplett ausgeführt oder nada.
Im Normalzustand (AUTOCOMMIT_ON) es cada SQL-Befehl una propio Transaktion. con AUTOCOMMIT_OFF puede ser dies abschalten. Alle folgenden Befehle son nun una Transaktion, a ellos con un "COMMIT" bestätigt y endgültig ausgeführt voluntad oder con "ROLLBACK" verworfen voluntad. Alle Los cambios en el Datentabellen antes "COMMIT" son sólo temporär y voluntad en el Falle uno "ROLLBACK" otra vez zurückgenommen.
Nach COMMIT oder ROLLBACK beginnt una neue Transaktion. Mit AUTOCOMMIT_ON se el ursprüngliche Comportamiento otra vez eingeschaltet. Ist a diesem Zeitpunkt ni Transaktion offen se ellos con el nächsten SQL-Befehl final. Auch SQLDONE final etwaige offene Transaktionen.
Sollte während uno Transaktion una schwerer Fehler auftreten (Client-Rechner stürzt de, SQL-Verbindung para Server bricht de, etc.), führt el Datenbank en aller Regel una automatisches ROLLBACK por. Ab XProfan9 puede Variables en el SQL-String eingesetzt voluntad. Profano-Arrays y Ausdrücke son no erlaubt.
|
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 11.05.2005 ▲ |
|
|
|