Seite 1 von 1

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

Verfasst: 01.10.2009 09:46
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

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

Verfasst: 01.10.2009 10:02
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

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

Verfasst: 01.10.2009 17:47
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