Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103611736
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-14 12:36:51

   来源:IBM  

XMLUPDATE 命令

DB2XMLFUNCTIONS.XMLUPDATE (commandXML、querySQL、updateSQL、errorCode、errorMsg)

commandXML —— 该参数是一个用于封装更新命令的 XML 字符串。这些命令将应用到由 querySQL 所选择的 XML 文档。

该命令的结构是:


update value

—— 这是用于包装所有更新命令元素的根元素。

@namespace —— 该属性的值应该是由分号分隔的 “前缀:名称空间” 字符串。前缀然后用于在 XML 文档中导航时使用的任何路径表达式中。

Essential —— 否(仅当在任何路径中使用名称空间时才需要它)。

即使是默认名称空间也必须用一个前缀进行限定。

—— 该元素定义需要在目标 XML 文档上执行的每个修改。

Occurrence —— 可以定义这些元素中的一个或多个。

每次出现处理文档的一个修改。

@col —— 该属性的值应该是对应于要在 querySQL 中修改的列位置的编号。

Essential —— 是。

Valid value —— 列位置从 1 开始。

@path —— 该属性的值是目标 XML 文档中节点的 XPath 位置。如果路径无效,则存储过程将中止。

Essential —— 是。

Valid value —— XPath 表达式。

如果要在 Xpath 中使用名称空间,请确保设置名称空间属性。

不能将通配符用于名称空间。

@using —— 该属性的惟一有效值是 SQL。如果该属性存在并设置为 SQL,那么 update value( 元素的子节点)被视为一个 SQL 查询。查询结果的第一行中的第一列将用作新的 update value。如果查询失败,那么存储过程将中止。

Essential —— 否。

Valid value —— SQL。

对于 Xquery,可以使用关键字 Xquery,也可以使用 SQL/XML 函数将 XQuery 嵌入 SQL。

@action —— 该属性定义将在 XML 文档中的目标节点(使用 @path 属性中定义的 XPath 来定位)上进行的操作。如果操作失败,那么存储过程将中止。

Essential —— 否。如果未设置操作,则假定是一个替换操作。

Valid value —— 替换、追加、删除和计算:

replace —— 使用 update value 替换目标节点。

append —— 将 update value 作为子节点追加到目标节点。

delete —— 删除目标节点。

compute —— 将 update value 当作参数化的表达式。表达式中的问号 (?) 将由目标节点的现有文本值替换。然后,计算表达式,得到的值将替换目标节点中的现有值。计算出的值的 XPath 只能是叶节点。

update value —— 这为每个更新命令 (//update/*) 的子节点。它可以是文本节点,也可以是元素。

Essential —— 否。对于 action=delete,不需要它。

Valid value —— 当 @using 属性被设置为 SQL 时,子节点应该是文本值。它被当作 SQL 表达式。当 @action 属性被设置为 compute 时,子节点应该是文本值。它被当作参数化表达式。在所有其他情况下,子节点都视为要替换的值。

querySQL —— 任何用于检索需要更新的 XML 文档的有效 SQL 选择语句。

Essential —— 是。

Valid value —— 只能选择 XML 文档。如果选择了其他列,存储过程就会中止。

updateSQL —— 它表示参数化的更新 SQL。修改的 XML 文档作为运行时参数被绑定到更新 SQL。它允许将修改的 XML 文档保存到数据库中的其他 XML 列中。

Essential —— 否。如果该参数为 null,则使用可更新的游标来修改所选的列。

重要事项:从命令行处理器 (CLP) 执行更新存储过程时,始终需要设置 updateSQL 参数的值。如果将这个值设置为 null 或空字符串,CLP 会抛出 JCC 异常:Column not updatable。当您从应用程序代码 (Java) 内部调用更新存储过程时,将发生此情况(即 updateSQL 设置为 null)。

errorCode —— 值为 -1 指示存储过程因发生某种错误而中止。如果更新成功,则返回指示已更新的记录数的正值。

errorMsg —— 错误消息,包括 XML 解析器和 JCC 驱动程序抛出的任何异常。

注意:如果得到 java.lang.OutOfMemoryError,应该增加 java 堆大小:

db2 update dbm cfg using JAVA_HEAP_SZ 1024

阅读(351) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~