XML类型的SQL参数
2011-05-24 14:09 温森特 阅读(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
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)
您的支持,我的动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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语句:使用策略模式优化代码结构