WEB开发网
开发学院数据库MSSQL Server SQL Server2005的XML数据类型之基础篇 阅读

SQL Server2005的XML数据类型之基础篇

 2006-11-18 09:16:06 来源:WEB开发网   
核心提示: --修改一个XML文档而不完全替换它:UPDATE TeamSET TeamDoc.modify('insert <Pitcher name="Jaret Wright"/> as lastinto (/Team/Players)[1]')WHERE T

--修改一个XML文档而不完全替换它:

UPDATE Team
SET TeamDoc.modify('
insert <Pitcher name="Jaret Wright"/> as last
into (/Team/Players)[1]
')
WHERE TeamDoc.exist('/Team[@name="Braves"]') = 1

注意,在这个UPDATE语句中的SET子句并不遵循你过去编写SQL时所使用的SET x = y 模式。该语法假定,你能够提供一个完全新的值来代替旧值-这在XML情况下意味着要使用一个完全新的文档来代替旧文档。当使用XML类型时,Modify方法可以即时修改原始文档。也就是说,对于SQL Server来说,不必要对每一次修改都试图替换整个文档。在本例中的SET语法反映了一种即时修改一个文档的更为有效的方式。

共有三种XML DML语句:insert,update和delete。这三个语句分别用于插入,更新和删除一个XML对象的部分。每一个方法的语法类似于SQL,但是也有一些明显的差别。

下面是相应于insert语句的语法:

insert
InsertExpression (
{{as first | as last}
into | after | before} LocationExpression
)

紧跟着这个insert语句的是你想要插入的XML(InsertExpression)。接下来,你需要指定你想怎样插入该XML。你的选择是into,after或before。其中,before和after子句指令数据库把InsertExpression作为LocationExpression的一个兄弟(sibling)插入。before或after则指定是在LocationExpression的前面还是后面插入它:

SET @doc.modify('
insert <Pitcher role="Starter"
name="Jaret Wright"/>
before (/Team/Players/Pitcher)[1]
')

这个into子句把InsertExpression作为LocationExpression的一个孩子结点插入。可选子句as first和as last用于指定在该孩子结点中插入的位置:

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

Tags:SQL Server XML

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