代码改变世界

XML类型的SQL参数

  温森特  阅读(629)  评论(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) 

 

 

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示