SQL0332 CCSID-id 1156和278之间的字符转换是不可能的

时间:2015-09-30 11:32:50

标签: java db2 db2-400 ibm-connections

我在Java程序中嵌入了sql查询,导致出现以下错误 -

"[SQL0332] Character conversion between CCSID-id 1156 and 278 is not possible.".

我只用一个库而不是全部来解决这个问题。

工作查询:

select * from SRBKTO where KOACNO=721

不工作的查询:

select * from SRBKTO where KOACNO= '721' (This works for other libraries)

如果我尝试使用带引号(String或int type)的条件子句来查询查询,则会抛出错误。

我对iSeries不了解。我的理解是,从CCSID 1156到278,字符" ' "(截至目前我只猜测该字符)存在转换问题。

我尝试了jt400native jar的java API com.ibm.as400.access.AS400.setCcsid(1156),将源CCSID设置为没有产生任何结果的连接对象。 是否需要更改目标CCSID?任何人都可以建议一种解决方法吗?

2 个答案:

答案 0 :(得分:0)

如果您使用DSPFFD显示KOACNO字段描述,您会发现codepage / charset是1156(波罗的海)。您可以使用CAST在查询中转换目标字符集的字段。

检查工作库中正确的CCSID是什么。下面的铸造示例(假设正确是1146):

select * from SRBKTO where CAST(KOACNO AS CHAR(20) CCSID 1146) = '721'

答案 1 :(得分:0)

问题是数据库表的CCSID与运行Java程序的作业的CCSID之间不兼容。

更改数据库表的CCSID以匹配作业

CHGPF FILE([LIBRARY]/[FILE]) CCSID(278)

CHGPF FILE([LIBRARY]/[FILE]) CCSID(*HEX)没有转化。

这似乎最有可能改变,正如你所说其他图书馆工作正常。

或者,要更改java程序的CCSID(如果以交互方式运行),则匹配数据库表

CHGJOB CCSID(1156)

CHGJOB CCSID(*HEX)没有转化