-303 erst zur programmlaufzeit
- Dieses Thema hat 3 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 13 Jahre, 7 Monaten von
Anonym.
-
AuthorPosts
-
10. Februar 2010 um 13:54 Uhr #4074
AnonymInaktivhallo,
ich hab eine frage zu db2 v9 und errorcodes. folgendes szenario: ich habe ein declare cursor und ein fetch-cursor im programm. der fetch-cursor beinhaltet ein feld mehr, als der declare. beim precompile und auch beim bind gibt es keinen fehler. erst zur laufzeit meckert db2 mit einem sqlcode -303. hierbei handelt es sich um einen stat. sql.
hat jemand erfahrung damit und kann mir erklären, warum das so ist.vielen dank und ich freue mich auf zuschriften.
gruß sigrid 🙂
11. Februar 2010 um 9:24 Uhr #4234
AnonymInaktivHallo Sigrid,
Du meinst, die INTO – Klausel des FETCH CURSUR hat eine Hostvariable mehr, als es Spalten im DECLARE CURSOR gibt ?
Das ist dem DB2 relativ egal. Der FETCH würde trotzdem einen SQLCODE = 0 liefern. ( Übrigens auch, wenn die INTO-Klausel weniger Variablen enthalten würde, als es Spalten im DECLARE gibt. In diesem Fall wird allerdings SQLWARN3 in der SQLCA gesetzt ).
SQLCODE -303 weist darauf hin, dass die Spaltentypen nicht kompatibel sind, dass Du z.B. versuchst, eine CHAR-Spalte in eine BIN FIXED Variable zu übertragen.
Das kann beispielsweise passieren, wenn man irrtümlich zwischen Hostvariable und Indikatorvariable ein Komma setzt.
12. Februar 2010 um 15:00 Uhr #4350
AnonymInaktivHallo Ulrich,
erstmal vielen Dank für die Info. 🙂 D.h. ja im Umkehrschluss, dass dieser Fehler tatsächlich nur zur Laufzeit auftreten kann. Nämlich dann, wenn die Hostvariablen mit echten Werten befüllt werden. Dass es hierbei zu einem Formatfehler kommen kann, wäre ja dann auch natürlich, da ich u.U. in einen undefinierten Bereich zugreife.
Falls ich richtig liege, dann bitte nochmal ein kurzes Feedback.
Und vielen lieben Dank.
Sigrid
15. Februar 2010 um 9:09 Uhr #4434
AnonymInaktivKorrekt, dieser Fehler tritt nur zum Laufzeitpunkt auf.
Wenn allerdings die Tabelle mit DECLARE TABLE im Programm deklariert wurde, erkennt der DB2-Precompiler die inkompatiblen Datentypen und gibt eine Warnung aus. ( DSNH303I ). Der Compile wird aber fortgesetzt.
-
AuthorPosts
You must be logged in to reply to this topic.