SQL-Befehl DELETE i.V. mit Rückgabewert DatabaseQuery

Für allgemeine Fragen zur Programmierung mit PureBasic.
lapo
Beiträge: 32
Registriert: 12.10.2004 13:36

SQL-Befehl DELETE i.V. mit Rückgabewert DatabaseQuery

Beitrag von lapo »

Hallo Zusammen!

Ich habe da eine Kleinigkeit beim DELETE auf eine Datenbank (in meinem Fall Oracle).

Wende ich den DELETE-Befehl in einem SQL-Tool (z.B. SqlPlus) bei Oracle an, erhalte ich immer die Anzahl der gelöschten Datensätze (bzw. 0 falls nichts gelöscht werden konnte) mitgeteilt.
Hier reagiert PB bzw. der ODBC-Treiber anderster. Die Anzahl der Datensätze werden nicht zurück gegeben.

Sofern Datensätze gelöscht werden konnten, gibt der Befehl DatabaseQuery bzw. DatabaseUpdate lediglich einen Wert ungleich 0 zurück (= kein Fehler aufgetreten). Wird kein Datensatz gelöscht, so geben die beiden Befehle den Wert 0 (= Fehler) zurück. Es handelt sich hierbei um keinen Fehler. Beim Befehl DatabaseError() wird keine Meldung zurück gegeben. Erst in Kombination wird eindeutig klar, daß kein Fehler aufgetreten ist und lediglich kein Datensatz gelöscht wurde.
Habt Ihr damit Erfahrung? Wie löst Ihr das?
Gibt es die Möglichkeit die Anzahl der gelöschten Datensätze zu ermitteln?

Grüße

Ralf
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: SQL-Befehl DELETE i.V. mit Rückgabewert DatabaseQuery

Beitrag von Kiffi »

lapo hat geschrieben:Gibt es die Möglichkeit die Anzahl der gelöschten Datensätze zu ermitteln?
außer der von Dir bereits genannten Möglichkeit, den Rückgabewert 0 mit einem leeren
DatabaseError() zu testen, fällt mir so ad hoc auch nicht ein, wie man das mit nativen
Mitteln machen könnte.

Allerdings gäbe es die Möglichkeit, ADOmate von srod zu verwenden (kommt darauf an,
welche DB Du konnektieren willst). Hier könnte man DatabaseUpdate so modifizieren,
dass es die Anzahl der betroffenen Zeilen (RecordsAffected) zurückgibt.

Sag Bescheid, wenn Du Dich dafür interessierst, dann kann ich einen entsprechenden Schnippsel posten.

Grüße ... Kiffi
a²+b²=mc²
lapo
Beiträge: 32
Registriert: 12.10.2004 13:36

Re: SQL-Befehl DELETE i.V. mit Rückgabewert DatabaseQuery

Beitrag von lapo »

Hallo Kiffi,

danke für Deine Infos.

Ich verwende zur Zeit noch eine ältere Version von PB und ADOmate läuft nicht damit. Davon abgesehen habe ich mir schon für die diversen Tabellen mit den Möglichkeiten von PB (= ODBC) eine Bibliothek erstellt... Das umstellen wäre etwas mühselig.

Grüße

Ralf
Antworten