【发布时间】:2015-07-15 06:00:17
【问题描述】:
当前的问题是将数据插入到具有 DBCLOB 列的 DB2 表中。该表的编码是 Unicode。该子系统是 MIXED YES,日语 CCSID 集为 (290, 930, 300)。应用程序已绑定 ENCODING CCSID。
我成功地获取了 Unicode 格式的 DBCLOB 数据,没有问题。但是当我转身尝试将其插入回来时,插入的数据被解释为不是 Unicode,似乎 DB2 认为它的 EBCDIC DBCS/GRAPHIC,并且插入的行显示 Unicode 0xFEFE。当我手动将插入的数据更新为有效的 DBCS 时,数据插入正常并显示预期的 Unicode DBCS 值。
为了插入数据,我使用了动态准备的 INSERT 语句,该语句带有 DBCLOB 列的占位符。与占位符关联的 SQLVAR 条目是一个 DBCLOB_LOCATOR,CCSID 设置为 1200。 正在通过 SET dbclobloc = SUBSTR(dbclob, 1, length) 创建 DBCLOB 定位器。创建的定位器正在被放入 SQLDA。然后正在执行准备好的 INSERT。
似乎 DB2 忽略了与 DBCLOB_LOCATOR SQLVAR 关联的 1200 CCSID。尝试将 CAST(? AS DBCLOB CCSID UNICODE) 放在 INSERT 中的占位符上没有帮助,因为当时 DB2 似乎已经决定要插入的数据的编码。
我被卡住了:(有什么想法吗?
格雷格
【问题讨论】: