【问题标题】:DB2 DBCLOB data INSERT with Unicode data带有 Unicode 数据的 DB2 DBCLOB 数据 INSERT
【发布时间】: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 似乎已经决定要插入的数据的编码。

我被卡住了:(有什么想法吗?

格雷格

【问题讨论】:

    标签: unicode db2


    【解决方案1】:

    我想我想通了,但不好:DBCLOB_LOCATOR 的 SET 语句是静态 SQL,而 DBRM 是绑定 ENCODING EBCDIC。因此,DB2 不得不假设数据在计划的 CCSID 中。 我还尝试了书籍的建议并使用 SELECT ... FROM SYSIBM.SYSDUMMYU 来设置 DBCLOB_LOCATOR。这应该告诉 DB2 数据是以 Unicode 格式传入的。但它又失败了,症状表明它仍然采用 DBCS EBCDIC CCSID。

    不好。

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2011-11-15
      • 1970-01-01
      • 2012-05-20
      • 2020-11-24
      • 2013-12-03
      • 2010-12-22
      • 2017-02-21
      • 1970-01-01
      相关资源
      最近更新 更多