SQL Server2005或以上使用XML片段

SQL Server 2005提供sp_xml_preparedocument处理XML片段,使之可以在当次连接会话中使用。并提供sp_xml_removedocument移除。
具体操作:


DECLARE @hdoc int
DECLARE @doc varchar(2000)

SET @doc = '
<root>
<Customers CustomerID="ALFKI" ContactName="Maria Anders"/>
<Customers CustomerID="ASDFD" ContactName="Earia Anders"/>
<Customers CustomerID="AS23D" ContactName="Earia 212nders"/>
</root>'


EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc

select *--ContactName 
from OpenXml(@hdoc,'/root/Customers')  
	--with( CustomerID varchar(10), ContactName varchar(20))
--Where CustomerID = 'AS23D'
	

除上述使用属性外还可解析内嵌的XML


<roo>
  <Customer>
    <Name>eric</Name>
  </Customer>
</root>
此时代码需要作调整:
注意OpenXML的参数
set @doc2 ='
<root>
	<Customers>
		<name>eric</name>
		<sex>男</sex>
	</Customers>
	<Customers>
		<name>John</name>
		<sex>女</sex>
	</Customers>
</root>'

EXEC sp_xml_preparedocument @hdoc OUTPUT, @doc2

select *--ContactName 
from OpenXml(@hdoc,'/root/Customers',2)  
	--with( CustomerID varchar(10), ContactName varchar(20))
	with( name nvarchar(10), sex nvarchar(20))
--Where CustomerID = 'AS23D'
	
Exec sp_xml_removedocument @hdoc




最后使用:
Exec sp_xml_removedocument @hdoc
移除。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值