ora-01406 Fehler beim abrufen der Werte über OCI
Dieser tritt beim abrufen der Werte, die eine Länge von 50, die auf einen Puffer, den man nur halten 30 chars.
Hab ich schon nachgeschaut, der Fehler und eine mögliche Lösung gefunden, die ist, erweitern Sie die Größe des Puffers, die den Wert gebunden ist.
Das problem ist, das tritt nur in einigen unserer Systeme und in anderen nicht. Hat die Oracle-version zu tun haben? Wenn ja, welche ist die version, in der dieser Fehler hat sich geändert?
Den Oracle-Versionen, die wir verwenden, sind 10.2.0.1 und 10.2.0.3
InformationsquelleAutor Gayan | 2009-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Fehler aufgeführt, die in der Frage wurde behoben, 10.2.0.3, und Der Fehler ist nur bei Oracle Versionen vor.
Edit: Die gleiche Frage wurde gesehen in Oracle 10.2.0.4. Wir sind noch auf der Suche in dieser
Edit2: Bei der Definition von Cursorn für CHAR/VARCHAR-Spalten im OCI (wir verwenden ein wrapper für diesen Zweck), der die Größe der Zeichenfolge, die gebunden ist an eine Spalte muss mindestens eins größer als die maximale Breite der Spalte.
z.B. Spalte Name: U_NAME Typ: VARCHAR(30)
1.
char zName[30];
pCursor->Define(zName, 3O); //diese Abstürzen würde, wenn die Spalte einen Wert mit 30 chars
2.
char zName[31];
pCursor->Define(zName, 3O); //diese Abstürzen würde, wenn die Spalte einen Wert mit 30 chars
3.
char zName[31];
pCursor->Define(zName, 31); //Richtig. würde nicht Abstürzen, für jeden Wert
InformationsquelleAutor Gayan
Haben Sie einen Fehler in Ihrem code, dass es nur erlaubt für 30 chars, wenn es möglicherweise 50. Warum nicht einfach beheben, anstatt sorgen über die Oracle-version der bug verursacht Probleme mit?
OK, aber ich bin neugierig: was macht Oracle 10.2.0.3 jetzt tun - lautlos abschneiden, den Wert auf 30 chars? Ich hätte, das war schlimmer?
Das problem liegt in der Tatsache, dass gebe ich die Länge der Zeichenfolge, wenn ich die Definition von Werten für die cursor. Tut mir Leid nicht zu erwähnen, diese in der ursprünglichen Frage. Trotzdem, der Wert in die Datenbank bekommen sollte, auf diese Länge gekürzt, das scheint nicht zu passieren, in 10.2.0.1.
InformationsquelleAutor Tony Andrews