我有一个定义为Unicode表的DB2表 它包含一个定义为Char(35)的字段。现在我有一个长度为35但包含德国变音符号的参数,因此它需要超过35个字节。 如果我尝试执行Insert或Update语句,我会得到一个SQLCODE -302。 如果我从参数变量中删除一个字符,它将起作用,并且读取表格也将正确返回德语变音符号。 我尝试使用带有DB2驱动程序3.64.82的SQuirreL而不是参数而是一个字符串常量,它返回了一个SQLCode -404,它是字符串常量的-302的链接。 这是我试图在SQirreL SQL Client 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驱动程序中的错误,或者是否有驱动程序的设置或配置可以使其工作。对我来说似乎是正确的现在,驱动程序正在将字节数与字段的指定长度进行比较,然后抛出该错误,因为36>但是很明显,对于Unicode表格来说这是对的。
版本信息:在SQuirreL中,我使用IBM DB2 Net Driver和db2jcc驱动程序版本3.64.82 DB是Z / OS DB2 V10 Rel 1015
答案 0 :(得分:2)
CHAR(35)
表示35 字节,而不是字符。这与驱动程序无关,但是在DB2中定义表的方式。创建表时,需要考虑字符列的可能字节长度。