select @输出变量=@变量X from 表
其中,@变量X=A,A是表中字段名,该字段值是123
我直接这样执行,输出时,@输出变量是“字段名”A,而不是字段A的值123
好像有点绕……
求助
2 个解决方案
#1
-- 创建一个测试表,并写入一条记录
select 100 id, '这是一个字符串' name into test
go
select * from test
go
declare @sql nvarchar(300), @colname varchar(10), @name varchar(30)
set @colname = 'name'
set @sql = 'select @name = ' + @colname + ' from test where id = 100'
exec sp_executesql @sql, N'@name varchar(30) out', @name out
print '查询结果:' + @name
go
drop table test
go
(1 行受影响)
id name
----------- --------------
100 这是一个字符串
(1 行受影响)
查询结果:这是一个字符串
#2
USE tempdb
GO
SELECT 'abc' AS [123] INTO Tmp1
GO
DECLARE @Col NVARCHAR(1000)='123'
EXEC('select ['+@Col+'] from Tmp1')
/*
123
abc
*/
#1
-- 创建一个测试表,并写入一条记录
select 100 id, '这是一个字符串' name into test
go
select * from test
go
declare @sql nvarchar(300), @colname varchar(10), @name varchar(30)
set @colname = 'name'
set @sql = 'select @name = ' + @colname + ' from test where id = 100'
exec sp_executesql @sql, N'@name varchar(30) out', @name out
print '查询结果:' + @name
go
drop table test
go
(1 行受影响)
id name
----------- --------------
100 这是一个字符串
(1 行受影响)
查询结果:这是一个字符串
#2
USE tempdb
GO
SELECT 'abc' AS [123] INTO Tmp1
GO
DECLARE @Col NVARCHAR(1000)='123'
EXEC('select ['+@Col+'] from Tmp1')
/*
123
abc
*/