【问题标题】:DB2 V10 for Z/OS Unicode Table and JDBC gets -302 for Parameter that contains Unicode CharactersDB2 V10 for Z/OS Unicode 表和 JDBC 为包含 Unicode 字符的参数获得 -302
【发布时间】:2015-01-24 13:33:06
【问题描述】:

我有一个定义为 Unicode 表的 DB2 表 它包含一个定义为 Char (35) 的字段。现在我有一个长度为 35 但包含德语变音符号的参数,因此它需要超过 35 个字节。 如果我尝试执行插入或更新语句,我会得到一个 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 > 35。但很明显,对于 Unicode 表,这不可能是正确的。

版本信息:在 SQuirreL 中,我使用 IBM DB2 Net Driver 和 db2jcc Driver Version 3.64.82 DB 是 Z/OS DB2 V10 Rel 1015

【问题讨论】:

    标签: jdbc unicode db2 squirrel-sql


    【解决方案1】:

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

    【讨论】:

    • 啊,这就解释了。感谢您的回答!所以我们已经做了正确的事情,重新定义了表格,所以字段现在是 Char (70)
    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 2020-12-19
    • 2020-05-06
    • 2011-01-28
    • 2019-01-09
    • 2019-01-29
    • 2016-06-12
    • 2012-12-24
    相关资源
    最近更新 更多