Discussion:
Zugriffsprobleme bei Datum und Real bei Oracle 11i-Client
(zu alt für eine Antwort)
Roland Reimann
2013-07-22 11:54:06 UTC
Permalink
Hallo NG,

wir haben hier verschiedene Programme die auf eine Oracle Datenbank
zugreifen. Bisher waren auf den Client-Rechnern die
Oracle-9i-Client-Software installiert. Unsere SQL-Abfragen liefen
damit problemlos.
Da ein Update der Oracle Datenbank geplant ist erhalten nun neue PC's
den Oracle 11i-Client.
Jetzt kommt es bei einigen Abfragen zu einer Exception mit der
Fehlermeldung: "Fehler bei einem aus mehreren Schritten bestehenden
Vorgang. Prüfen Sie die Statuswerte".

Eine Recherche im Internetzeigte lies das Problem erkennen. Die
Fehlermeldung ist irreführend. Wenn in der Datenbank Real-Zahlen oder
Datumswerte abgefragt werden, welche extreme Werte besitzen, dann
kommt es zu der besagten Fehlermeldung (bei Realzahlen manchmal auch:
"Fehlerhaftes Argument").
Die Werte werden geholt mit FieldByName().AsString / AsDateTime /
AsFloat.
Extreme Werte meint z.B. bei Real-Zahlen -x.xxE-15 und bei
Datumswerten 01.01.99.
Als Provider verwenden wir: OraOLEDB.Oracle.

Hat jemand ähnliche Erfahrungen gemacht und eventuell eine gute Idee
für eine saubere Lösung?

Gruß aus Aßlar
Roland
Stefan Graf
2013-07-22 12:54:21 UTC
Permalink
Post by Roland Reimann
wir haben hier verschiedene Programme die auf eine Oracle Datenbank
zugreifen. Bisher waren auf den Client-Rechnern die
Oracle-9i-Client-Software installiert. Unsere SQL-Abfragen liefen
damit problemlos.
Da ein Update der Oracle Datenbank geplant ist erhalten nun neue PC's
den Oracle 11i-Client.
Jetzt kommt es bei einigen Abfragen zu einer Exception mit der
Fehlermeldung: "Fehler bei einem aus mehreren Schritten bestehenden
Vorgang. Prüfen Sie die Statuswerte".
Eine Recherche im Internetzeigte lies das Problem erkennen. Die
Fehlermeldung ist irreführend. Wenn in der Datenbank Real-Zahlen oder
Datumswerte abgefragt werden, welche extreme Werte besitzen, dann
"Fehlerhaftes Argument").
Die Werte werden geholt mit FieldByName().AsString / AsDateTime /
AsFloat.
Extreme Werte meint z.B. bei Real-Zahlen -x.xxE-15 und bei
Datumswerten 01.01.99.
Als Provider verwenden wir: OraOLEDB.Oracle.
Hat jemand ähnliche Erfahrungen gemacht und eventuell eine gute Idee
für eine saubere Lösung?
Ich habe schon viele Zugriffe mit Delphi (2007 und XE2) und Oracle mit
OLEDB realisiert.

Das Problem in der Form hatte ich noch nie, ich nutze aber auch nie Real
sondern wenn überhaupt Float oder Double. Bei Datumswerten kenne ich das
mit ungültigen Werten, z. B. 0. Das fange ich immer ab und übergebe dann
null. Bei Auslesen hatte ich aber noch nie das Problem.
Die besagte Fehlermeldung kommt aber auch schon mal bei ganz seltsamen
Datenproblemen, ich vermute das ist so eine Meldung "Ich komm nicht
weiter, das stimmt was nicht", obwohl sie einem suggeriert, dass mein
eine Verteilte Transaktion über mehre DBs durchführt, ist eben indische
Software ;-)

Warum aber noch 11i? Ich würde jetzt gleich auf 12 gehen. Neuester
Client? Auch das Thema 32/64-Bit berücksichtigt ;-)
--
Stefan Graf
Lesen Sie weiter auf narkive:
Loading...