t-sql - T-SQL 中的变量

标签 t-sql

我的T-SQL代码如下:

declare @xml xml = N'
<a abb="122">
    <b>
    </b>
</a>
<a abb="344">
    <b>
    </b>
</a>';

declare @T table (XMLCol xml);

insert into @T values (@xml);

declare @sql varchar(max);
set @sql = 'update @T set
                     XMLCol.modify(''
                            replace value of (/a/@abb)[1] 
                            with 888'');';
exec (@sql);

当我执行时,出现故障段:

Msg 1087, Level 15, State 2, Line 1
Must declare the table variable "@T".

如何声明变量@T才能理解?

最佳答案

您可以使用临时表代替表变量。

declare @xml xml = N'
<a abb="122">
    <b>
    </b>
</a>
<a abb="344">
    <b>
    </b>
</a>';

create table #T (XMLCol xml);

insert into #T values (@xml);

declare @sql varchar(max);
set @sql = 'update #T set
                     XMLCol.modify(''
                            replace value of (/a/@abb)[1] 
                            with 888'');';
exec (@sql);

drop table #T

关于t-sql - T-SQL 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5456910/

相关文章:

sql-server - IN (NULL) 是否始终不返回任何行?

sql - SQL Server 中的货币舍入方式

SQL 查询 - 使用替换功能很慢

sql-server-2008 - UNPIVOT 如何为每个 ID 添加增量行号

sql-server - 执行插入时的索引性能

SQL Server 列加密

具有多个 WHERE 子句的 SQL RANK

SQL Server : table join based on record-dependent values

sql - 从输出中删除最后 3 个字符的数据

sql - JOIN 连接列性能