我需要做这样的事情,但是它总是会因“将数据类型varchar转换为int时出错”而失败:
DECLARE @intParam INT DECLARE @ColName VARCHAR(64) SET @ColName='intcolumn' SET @intParam = SELECT @ColName FROM myTable
我该如何完成这样的事情?我可以看到问题是SELECT语句只是将列名作为字符串返回,但是我不确定如何解决该问题。我正在使用SQL Server 2008R2。
您需要使用动态sql:
使用sp_executesql执行动态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