jdbc - DB2用于z/os Unicode表和JDBC获取包含Unicode字符的参数 302

  显示原文与译文双语对照的内容
0 0

我有一个定义为Unicode表的DB2表它包含一个定义为 Char ( 35 )的字段。 现在我有一个长度为 35但包含德语元音的参数,所以它需要超过 35字节。 如果试图执行Insert或者Update语句,我将得到一个 SQLCODE -302. 如果从参数变量中删除一个字符,它将工作,读取表也会返回德语的正确变量。 我尝试使用SQuirreL和 DB2,而不是参数,而是一个字符串常量,它返回一个 SQLCode,它是字符串常数的pendant 。 下面是我尝试在 SQirreL SQL客户端 3.4.0中执行的SQL语句:


INSERT INTO LEA0001.VP_105 (Anlage_Zeitpunkt, Anlage_User, Aender_Zeitpunkt,
 Aender_User, V_Nr, lief_id_ref_nr, gueltig_bis_zp, gueltig_ab_zp,
 erstprod_termin,druckfreig_termin, ANF_SDB, IST_ERSTPROD_KW, pr_name, pr_strasse,
 pr_plz, pr_ort, pr_land) values (current timestamp, 'HUGO', current timestamp, '', 
48854, 2769, '9999-12-31 23:59:59.999999', '2014-11-25 15:40:36.395542',
'0001-01-01', '0001-01-01', 'N', 'N', 'Getränkeggggggggggggggggggggggggggg', '', '', '', '')

如果这个错误发生在DB2驱动程序中,或者有一个设置或者配置,使它能够工作,我想知道这是什么。 在我看来,驱动程序现在正在将字节数与指定的字段长度进行比较,然后抛出该错误,因为> 35. 但是对于Unicode表来说,这显然是不正确的。

版本信息:在SQuirreL中我使用IBM驱动程序和db2jcc驱动程序版本 3.64.82数据库是一个z/os DB2 V10 1015

时间: 原作者:

0 0

CHAR(35) 表示 35字节字节,而非字符。 这与驱动程序无关,但与在DB2中定义表的方式有关。 你需要在创建表时考虑字符列的可能字节长度。

原作者:
...