XML类型的SQL参数
2011-05-24 14:09 温森特 阅读(628) 评论(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
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)
您的支持,我的动力!