KM
03-04-07, 14:42
Kann mir jemand sagen warum folgendes Statement nicht funktioniert ?
rs = stmt.executeQuery(
"SELECT ttartn, ttsprs, " +
"CASE " +
"WHEN ttsprs = 'P' THEN " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1153) " +
"WHEN ttsprs = 'G' THEN " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 875) " +
"WHEN ttsprs = 'R' THEN " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1154) " +
"ELSE " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1141) " +
"END " + ...
Hierbei soll je nach Sprachcode der Text in die jeweilige Codepage gecastet werden. Ich erhalte immer den Fehler
SQL error : java.sql.SQLException: [SQL0332] Zeichenumsetzung zwischen CCSID 1154 und CCSID 1153 ungültig.
obwohl ich doch gar nicht zwischen 1154 und 1153 konvertieren will, sondern nur zwischen 65535 und der betreffenden CCSID.
Folgender Code funktioniert:
rs = stmt.executeQuery(
"SELECT ttartn, ttsprs, " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1153), " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 875), " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1154), " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1141) " +
"FROM ...
wobei ich hier ja immer 3 zusätzliche Felder erhalte und dann erst bei der Verarbeitung des Resultsets das betreffende Textfeld selektiere. Das ist ja nicht sehr effizient und wollte ich eigentlich vermeiden. Aber bei der obigen Variante erhalte ich immer diesen seltsamen Fehler.
Gruß,
KM
rs = stmt.executeQuery(
"SELECT ttartn, ttsprs, " +
"CASE " +
"WHEN ttsprs = 'P' THEN " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1153) " +
"WHEN ttsprs = 'G' THEN " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 875) " +
"WHEN ttsprs = 'R' THEN " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1154) " +
"ELSE " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1141) " +
"END " + ...
Hierbei soll je nach Sprachcode der Text in die jeweilige Codepage gecastet werden. Ich erhalte immer den Fehler
SQL error : java.sql.SQLException: [SQL0332] Zeichenumsetzung zwischen CCSID 1154 und CCSID 1153 ungültig.
obwohl ich doch gar nicht zwischen 1154 und 1153 konvertieren will, sondern nur zwischen 65535 und der betreffenden CCSID.
Folgender Code funktioniert:
rs = stmt.executeQuery(
"SELECT ttartn, ttsprs, " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1153), " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 875), " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1154), " +
"CAST(CAST(tttext AS CHARACTER (60) CCSID 65535) AS CHARACTER (60) CCSID 1141) " +
"FROM ...
wobei ich hier ja immer 3 zusätzliche Felder erhalte und dann erst bei der Verarbeitung des Resultsets das betreffende Textfeld selektiere. Das ist ja nicht sehr effizient und wollte ich eigentlich vermeiden. Aber bei der obigen Variante erhalte ich immer diesen seltsamen Fehler.
Gruß,
KM