WEB开发网
开发学院数据库DB2 非 Unicode 数据库中的 XML 阅读

非 Unicode 数据库中的 XML

 2009-11-28 00:00:00 来源:WEB开发网   
核心提示: db2updatedbcfgfordatabasenameusingENABLE_XMLCHARFALSE之后,DBA 需要再循环实例,非 Unicode 数据库中的 XML(9),以使更改生效, 例如,那么可以用它来确定 BLOB 中的数据所设的代码页,这被称作 “内部编码&rdq

db2 update db cfg for database name using ENABLE_XMLCHAR FALSE 

之后,DBA 需要再循环实例,以使更改生效。 例如,如何用户在一个 ISO-8859-1 代码页的数据库上执行:

INSERT INTO XTAB VALUES (XMLPARSE(DOCUMENT 'I just 
  joined the ΔΨΠ fraternity!' PRESERVE WHITESPACE)); 

那么产生的插入到 XTAB 中的 XML 文档包含 3 个替换字符,用于替代希腊字母。如果 ENABLE_XMLCHAR 被设为 FALSE,那么这条 INSERT 语句将产生一个错误:

SQL20429N The XML operation "XMLPARSE" is not allowed on strings 
   that are not FOR BIT DATA on this database. 

这个错误告诉用户,对于 CHAR 类型 XMLPARSE 是不允许的。为了适当地将这个 XML 文档插入数据库,用户需要使用一个外部 API 将字符串 "I just joined the ΔΨΠ fraternity!" 绑定到一个 BLOB、CHAR FOR BIT DATA 或 VARCHAR FOR BIT DATA 主机变量。这样可以用与客户机代码页相同的代码点将文本插入 XML 列。

不安全 XML 文档的插入

插入包含不能在数据库代码页中表示的代码点的文档的惟一安全的方法是使用一个 BLOB 或 BIT DATA 主机变量。这不能从 CLP 中完成。

将 XML 绑定到一个 BLOB 主机变量有助于避免替换字符,因为 DB2 不会在 BLOB 数据上执行代码页转换。为了确定 BLOB 中的数据的代码页,有一定的规则。

如果 BLOB XML 流包含一个 byte-order mark (BOM),那么可以用它来确定 BLOB 中的数据所设的代码页。这被称作 “内部编码”,因为主机变量上没有 “外部编码”(即没有与主机变量相关联的代码页)。

上一页  4 5 6 7 8 9 10  下一页

Tags:Unicode 数据库 XML

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接