在 DB2 SQL 存储过程中使用 XML
2009-11-23 00:00:00 来源:WEB开发网演示将 XMLQUERY 的输出赋值给 XML 类型的变量。
在 XMLQUERY 函数中,“PASSING inpdoc” 引用变量。如果在 SELECT 语句中使用 XMLQUERY,那么 PASSING 子句可以引用表列或者存储过程变量。
在调用存储过程的输出中,可以看到提取 XML 元素与提取 XML 元素值之间的差异。
尽管这个示例只将值赋给输出参数,但是使用声明的变量也很容易。
清单 8. 三个变量赋值示例的输入参数 “inpdoc” 的示例数据
<customer>
<name>Jed Clampett</name>
<city>Beverly Hills</city>
</customer>
清单 9. 三个变量赋值示例的输出
Value of output parameters
--------------------------
Parameter Name : P2
Parameter Value : Jed Clampett
Parameter Name : P3
Parameter Value : <name>Jed Clampett</name>
Return Status = 0
变量赋值 / SET 语句
我们首先考虑如何将 XMLQuery 函数的输出返回给存储过程中声明的变量。在这里,p2 将输出转换为 VARCHAR 值,而 p3 以 XML 形式返回输出。
清单 10. 使用 SET 语句进行变量赋值
CREATE PROCEDURE ex_proc
(
IN inpdoc XML,
OUT p2 VARCHAR(30),
OUT p3 XML
)
LANGUAGE SQL
NO EXTERNAL ACTION
BEGIN
SET p2 =
XMLCAST
(
XMLQUERY('$d/customer/name' PASSING inpdoc AS "d")
AS VARCHAR(30)
);
SET p3 = XMLQUERY('$d/customer/name'PASSING inpdoc AS "d");
END
更多精彩
赞助商链接