一个SQL表变量+xml的例子

本文展示了如何在SQL中声明并使用XML表变量,包括将XML字符串插入表变量,通过节点解析插入临时表,以及.NET环境中如何调用存储过程传入XML参数。
部署运行你感兴趣的模型镜像

1声明xml

Declare@AccrueCalcResultListxml

2声明一个包括xml列的表变量

Declare @xmlTableasTable(xmlColxml)

3将xml串插入表变量

insertinto@xmlTablevalues(@AccrueCalcResultList)

4创建一个临时表,把表变量的数据插入临时表

INSERTINTO#AccrueCalcTable

selectT.item.value('@ID','bigint')asID,

T.item.value('@SrcDocLineNo','nvarchar(50)')asSrcDocLineNo,

T.item.value('@Maturity','DATETIME')asMaturity

。。。

from@xmlTablecrossapplyxmlCol.nodes('//ARDrawBill')asT(Item);

5 .net调用存储过程

stringaccrueResultListXml =SysUtils.ToXml(idTable);

DataParams.Add(DataParamFactory.CreateInput("AccrueCalcResultList", accrueResultListXml,System.Data.DbType.Xml));

DataAccessor.RunSP("dbo.P_ARUpdateDrawBillData", DataParams);

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

SQL Server 中,将 `SELECT` 查询结果赋值给变量一个常见的操作,通常用于存储过程中或者需要临时保存查询结果的场景。具体方法如下: 1. **使用 `SELECT` 语句直接赋值** 可以通过 `SELECT` 语句将查询结果直接赋值给变量。这种方式适用于查询结果为单行的情况。 ```sql DECLARE @UserName NVARCHAR(100); SELECT @UserName = UserName FROM Users WHERE UserID = 1; ``` 在这个例子中,`@UserName` 变量被赋值为 `Users` 中 `UserID` 为 1 的用户的名称。 2. **使用 `SET` 语句结合子查询** 如果查询结果可能返回多行,但只需要一个值,可以使用 `SET` 语句结合子查询来确保只返回一个值。 ```sql DECLARE @Total INT; SET @Total = (SELECT COUNT(*) FROM Orders); ``` 这里 `@Total` 被赋值为 `Orders` 中的记录总数。 3. **处理多行结果** 如果查询结果可能返回多行,可以使用 `STUFF` 函数和 `FOR XML PATH` 来将多行数据合并成一个字符串并赋值给变量。 ```sql DECLARE @UserNames NVARCHAR(MAX); SET @UserNames = STUFF(( SELECT ',' + UserName FROM AspNetUsers WHERE EmailConfirmed = 0 FOR XML PATH('') ), 1, 1, ''); ``` 上述代码将 `AspNetUsers` 中 `EmailConfirmed` 为 0 的所有用户名拼接成一个逗号分隔的字符串,并赋值给 `@UserNames` 变量 [^3]。 4. **动态 SQL 和输出参数** 在存储过程中,如果需要执行动态 SQL 并获取返回值,可以使用 `sp_executesql` 存储过程,并通过输出参数传递结果。 ```sql DECLARE @RecordCount INT; DECLARE @GetRecordSql NVARCHAR(100); SET @GetRecordSql = 'SELECT @recordcount = COUNT(1) FROM ' + @chart; EXEC sp_executesql @GetRecordSql, N'@recordCount INT OUTPUT', @recordCount OUTPUT; ``` 这里 `@recordCount` 被赋值为动态 SQL 查询的结果 [^4]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值