我需要做类似的事情,但它总是失败'错误将数据类型varchar转换为int':
DECLARE @intParam INT
DECLARE @ColName VARCHAR(64)
SET @ColName='intcolumn'
SET @intParam = SELECT @ColName FROM myTable
我如何完成这样的事情?我可以看到问题是SELECT语句只是将列名作为字符串返回,但我不知道如何解决这个问题。我正在使用SQL Server 2008R2。
答案 0 :(得分:6)
您需要使用动态sql:
DECLARE @intParam INT
DECLARE @ColName VARCHAR(64)
SET @ColName='intcolumn'
DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'SELECT @intParam_out = ' + @ColName + ' FROM myTable'
exec sp_executesql @SQL, N'@intParam_out int OUTPUT', @intParam_out = @intParam OUTPUT
答案 1 :(得分:-2)
使用Cast:
SET @intParam = SELECT cast(@ColName as int) FROM myTable