在 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)
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接