Wie kann ich wissen, ob 10385274000 passt in: - ANZAHL(10) für Oracle?

Ich arbeite die ganze Woche durch wie bei ein Produktion Fehler.

Habe ich endlich den Punkt, wo ich finden kann, der Täter-Datensatz die Ursache für die Sauerei.

Habe ich die folgende Fehlermeldung:

java.sql.SQLException: [BEA][Oracle JDBC Driver][Oracle]ORA-01438: value larger than specified precision allows for this column

Eventuall von allen die info, die ich denke, das könnte die falschen Daten, wird das system versuchen, einfügen:

10385274000

In eine ANZAHL(10)

Wie kann ich wissen, ob dieser Wert passt oder nicht?

Danke

BEARBEITEN

Als pro Michel Todd Vorschlag:

create table xyz( testfield number( 10 ) );

insert into xyz values( 10385274000 )


Error: ORA-01438: value larger than specified precision allowed for this column

Danke Jungs!!!

Danke stackoverflow

BEARBEITEN

Anmerkungen zu meinem "selbst" ( nicht zu vergessen, was war das problem )

Hatte ich das Oracle-Produkt speichert, in eine Datenbank-Tabelle die Zeit des Ereignisses

START_TIME|END_TIME

Es stellt sich heraus, everynight es sicherungen dieser Informationen in einer anderen Tabelle, sondern führt eine trnsformation in den Prozess. Es speichert wie:

TOTALTIME

Das problem kommt, wenn Sie dieses Feld ist berechnet durch Subtraktion ENDTIME - STARTTIME. Die resultierende Zahl in dieser Spalte gespeichert, die definiert ist als: ANZAHL(10)

Gut, es stellt sich heraus, wenn END_TIME-START_TIME sind zu weit Weg in der Zeit ( über 4 Monate oder so ) den Wert ( in Millisekunden ) wäre SO groß, es passt nicht in die Spalte Ziel ( ich denke, es hat so etwas wie Endzeit.getTime() - startTime.getTime() im code )

All dies klingt zu einfach und zu dumm jetzt, aber es hat mich 4 Tage+ finden, weil da, dadurch ist eine geschlossene Anwendung, die ich hatte keine Ahnung, was passiert war, das einzige was ich bekommen habe war der stacktrace.

Hatte ich zum reverse Engineering ( im ALTEN Sinne des Wortes, von hand und natürlich mit out-Quelle), die den gesamten Prozess, um dies herauszufinden.

Als ich es getan habe, ich habe den gleichen Fehler bei meiner "hand-coded migrator" und finden Sie heraus, wie es zu lösen!

Wenn Sie verwenden das Wort 'Dringend', bitte verwenden Sie es in ein lesbares format anstelle der Laufenden Wort. Wenn es dringend ist es ist dringend notwendig, aber die Menschen müssen wissen, dass es dringend ist, das ist schwer, wenn es heißt : "Urgeeeent!"
Eine q&d, wie es zu tun ist, erstellen Sie eine temporäre Tabelle mit einer Zahl(10) und der Versuch, legen Sie diesen Wert. Wenn es funktioniert, das ist nicht das problem.

InformationsquelleAutor OscarRyz | 2009-08-01

Schreibe einen Kommentar