Zum Hauptinhalt springen

OdbcPrepare

obj -> OdbcPrepare(alpha1) : handle

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von der DLL-Schnittstelle mit grafischer Erweiterung Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle Ausführbar vom SOA-Service mit grafischer Erweiterung

SQL-Statement vorbereiten

Details

Mit dieser Anweisung wird ein SQL-Statement zur Durchführung mit OdbcExecute () vorbereitet. Das vorbereitete Statement kann mehrfach ausgeführt werden, ohne es erneut angeben zu müssen. Das wird besonders im Zusammenhang mit dem parametrisierten Aufruf (siehe OdbcParamAdd ()) nützlich.

Im Parameter (obj) wird ein Deskriptor auf ein OdbcCon -Objekt übergeben. In (alpha1) ist das SQL-Statement angegeben, welches für die Durchführung vorbereitet werden soll. Bei erfolgreicher Durchführung der Anweisung wird ein Deskriptor auf ein OdbcStm -Objekt zurückgegeben. Im Fehlerfall wird _ErrOdbcError zurückgegeben. Weitere Informationen zu dem Fehler können dann über die OdbcErr...-Eigenschaften des ODBC-Verbindungs-Objekt ermittelt werden. Ist schon die Erstellung des ODBC-Statement-Objekts fehlgeschlagen, gibt die Anweisung _ErrOdbcFunctionFailed zurück.

Je nach SQL-Statement sind zwei Fälle zu unterscheiden:

  1. SQL-Abfrage (SELECT) Nach der Durchführung des Befehls muss zunächst OdbcExecute () ausgeführt werden. Anschliessend kann die Ergebnismenge durch mehrfache Aufrufe von OdbcFetch () ermittelt werden.
  2. Schreibendes SQL-Statement (z. B. INSERT) Da es keine Ergebnismenge gibt, ist die Durchführung mit OdbcExecute () abgeschlossen.

Das Objekt bleibt erhalten, bis die Verbindung zur Datenquelle getrennt, oder das Objekt selbst mit OdbcClose () geschlossen wird.

Beispiel:

tOdbcStm # tOdbcCon->OdbcPrepare('SELECT Name FROM Customer');
if (tOdbcStm > 0)
{
tOdbcStm->OdbcExecute();

tClmCounter # tOdbcStm->spOdbcResCountClm;

while (tOdbcStm->OdbcFetch() = _ErrOk)
{
// Verarbeitung
...
for tCounter # 1;
loop Inc(tCounter);
while (tCounter <= tClmCounter)
{
...
}
}

tOdbcStm->OdbcClose();
}