WEB开发网
开发学院数据库DB2 在 DB2 SQL 存储过程中使用 XML 阅读

在 DB2 SQL 存储过程中使用 XML

 2009-11-23 00:00:00 来源:WEB开发网   
核心提示: 在 COMMIT 或 ROLLBACK 之后的 XML 变量XML 变量(包括参数和声明的变量)在 COMMIT 或 ROLLBACK 之后不可用,如果试图使用 XML 变量,在 DB2 SQL 存储过程中使用 XML(4),而没有首先给它们赋新值,就会产生下面这样的错误: 清单 3. 在 CO

在 COMMIT 或 ROLLBACK 之后的 XML 变量

XML 变量(包括参数和声明的变量)在 COMMIT 或 ROLLBACK 之后不可用。如果试图使用 XML 变量,而没有首先给它们赋新值,就会产生下面这样的错误:
清单 3. 在 COMMIT/ROLLBACK 之后收到的错误消息

SQL1354N An SQL variable in routine "XXX" is not available for reference due 
 to a recent commit or rollback operation. SQLSTATE=560CE 


如果需要在存储过程中显式地控制提交点,那么考虑以下选项:

将变量的 XML 文档传递进一个持久性的表中。使用 “持久性的” 表是因为声明的全局临时表当前不允许 XML 列。

将 XML 变量串行化成 VARCHAR,在 COMMIT 或 ROLLBACK 之后再解析它。

代码示例

我们来研究一下如何在 DB2 存储过程中处理 pureXML 数据。为此,我们将考虑几个与常见编程场景相关的示例。

生成测试数据

尽管在开发期间可以从命令行测试存储过程,但是可能需要创建虚构的 XML 文档,它们将作为输入参数发送。清单 4 提供一种生成测试数据的简单技术:
清单 4. 生成测试数据(1)

CALL ex_proc 
( 
 XMLPARSE( 
  DOCUMENT 
  ' 
   <customer> 
    <custid>HX25</custid> 
   </customer> 
  ' 
 ) 
) 
; 


为了清晰,前一个示例保留了许多空白,使 XML 标记处于单独的行上。但是,也可以让代码更紧凑:
清单 5. 生成测试数据(2)

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:DB SQL 存储

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