代码改变世界

XML类型的SQL参数

2011-05-24 14:09  温森特  阅读(624)  评论(0编辑  收藏  举报

有的时候,我们常常需要将一个数据表格当做参数发送给存储过程,然后进行操作,以往,我常常用逗号或者其他分隔符将数据拼成一个字符传,但这个方法有限制,sql verchar类型只能达到8000字符,现在有了SQL2005了,我们可以直接用XML当做参数了,这样既方便有没有那个限制了。自己也是刚刚使用了几次,有些功能还是不是很清楚。只将自己学习的两种方法总结一下。

 一种方法,当做表用,如下,返回多列。

@PeakHours xml,
DECLARE @NEWPeakHours TABLE([WeekDay] smallint,[PeakHourType] varchar(
10),[StartTime] datetime,[EndTime] datetime,IsChanged bit)

INSERT INTO @NEWPeakHours
SELECT 
T.Records.query(
'WD').value('.','smallint'as WD,
T.Records.query(
'TP').value('.','varchar(10)'as TP,
T.Records.query(
'ST').value('.','datetime'as ST,
T.Records.query(
'ET').value('.','datetime'as ET,
0

 from @PeakHours.nodes('/RP/PH') AS T(Records) 


另外一种方法, 返回单列

select Stores.ID.value('.', 'int') as StoreId

from @Stores.nodes('/ES/ST') Stores(ID)