在 DB2 SQL 存储过程中使用 XML
2009-11-23 00:00:00 来源:WEB开发网在游标中
允许 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 表达式。
作为查询
XQuery 查询只能在动态游标中定义。以下代码在 SQL 存储过程中是不允许的:
清单 2. 在 SQL 存储过程中不允许静态 XQUERY
XQUERY
for $dept in db2-fn:xmlcolumn("DEPT.DEPTDOC")/dept
where $dept/@deptID="PR27"
return $dept/employee/name
更多精彩
赞助商链接