DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的最佳实践,第 5 部分
2009-11-12 00:00:00 来源:WEB开发网xquery for $t in db2-fn:xmlcolumn( ‘ TRADES.TRADEDOC')/FpML
where $t/party/partyId = 12345
return $t;
select tradedoc
from trades
where xmlexists('$TRADEDOC/FpML/party[partyId=12345]' );
图 82:两个在谓词中使用使用 hard-coded 文字值 XML 查询
select tradedoc
from trades
where xmlexists('$TRADEDOC/FpML/party[partyId=$x]'
passing cast(? as integer) as "x");
图 83:使用参数标记的 SQL/XML 查询
避免 DB2 和应用程序之间的代码页转换
XML 不同于 DB2 中的其它数据类型,因为它可以内部编码也可以外部编码。内部编目意味著 XML 数据的编码来自于与数据本身。外部编码意味著数据编码源自于应用程序代码页。你用来跟 DB2 交换 XML 数据的应用程序变量的数据类型决定如何派生编码。如果你的应用程序对 XML 使用字符类型变量,那么它是外部编码(使用应用程序代码页)。如果你使用二进制应用那个程序数据类型,那么 XML 数据将考虑使用内部编码。在这种情况下编码取决于一个 Unicode Byte-Order mark (BOM) 或 XML 文档自己的一个编码声明就像
<?xml version="1.0" encoding="UTF-8" ?>
从性能的角度,我们的目标是尽可能的避免代码页转换,因为这将消耗额外的 CPU 时钟周期。最好使用内部编码的 XML 数据,不要使用外部编码数据,因为它可以防止不必要的代码页转换。也就是说在你的应用程序中你应该尽量使用二进制数据类型而不是字符数据类型。例如,在 CLI 中当你使用 SQLBindParameter() 来在输入数据缓冲中绑定单数标记时,你应该使用 SQL_C_BINARY 数据缓冲而不是 SQL_C_CHAR、SQL_C_DBCHAR 或 SQL_C_WCHAR 。当从 Jave 应用程序插入 XML 数据时,以二进制流(setBinaryStream)的形式读取 XML 数据比作为字符串(setString)的形式更好。同样的,如果你的 Java 应用程序收到了来自 DB2 的 XML 并写入了一个文件中,如果 XML 是以非二进制数据的形式写入的话可能会发生代码转换。
- ››db2 对float类型取char后显示科学计数法
- ››DB2中出现SQL1032N错误现象时的解决办法
- ››DB2 锁升级示例
- ››db2诊断系列之---定位锁等待问题
- ››db2 命令选项解释
- ››最佳ASP.NET编程习惯
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
- ››DB2 XML 编程,第 1 部分: 理解 XML 数据模型
更多精彩
赞助商链接