存储过程中支持的 XML 功能
对于 DB2 9,SQL 存储过程有一些用来处理 XML 数据的新功能。有一种新的数据类型 “XML”。不但可以将它用于表中的列,还可以用于参数和声明的变量。DB2 9 还增强了 SELECT 和 UID 语句,增加了几个新的 XML 函数。
这在三个方面增强了 SQL 存储过程:
可以在以下位置使用新的 XML 函数(例如,XMLQUERY、XMLEXISTS、XMLTABLE):
- 在游标中
- 允许 SELECT 语法的任何地方,比如 SELECT INTO 和 VALUES
- 变量赋值,比如 SET 语句
XML 列可以:
- 在游标结果集中返回
- 绑定(?表示法)到 SELECT 和 UID 语句中
IF/THEN/ELSE 语句可以测试 XMLEXISTS 谓词
可以从以下语句装载 XML 类型的变量:
- SELECT INTO 语句
- VALUES INTO 语句
- FETCH INTO 语句
- EXECUTE INTO 语句
- SET 语句
限制和解决方法
SQL 存储过程中的 XML 功能有一些限制:
- XQuery 查询只能作为动态游标的一部分运行。
- XML 变量在 COMMIT 或 ROLLBACK 之后不可用。
动态游标中的 XQuery
XQuery 命令可以出现在两种不同的上下文中:
- 放在单引号中,作为 SQL/XML 函数 XMLQUERY、XMLEXISTS 和 XMLTABLE 的参数
SQL/XML 函数中嵌入的 XQuery 允许静态 SQL 语句。在下面的示例中,变量 adrs 是一个 XML 列或 XML 类型的变量。
清单 1. SQL/XML 函数中嵌入的 XQuery
| XMLQUERY('$d/cust/name' PASSING adrs AS "d") |
注意: 这个示例只包含一个非常简单的 XPath 表达式,但是 SQL/XML 函数(XMLQUERY、XMLEXISTS、XMLTABLE)可以包含任何有效的 XQuery,包括复杂的 FLWOR 表达式。
