我的sql语句是这样的
DECLARE @OLD_NAV_VALUE AS INT
DECLARE @FINAL AS INT
SELECT @OLD_NAV_VALUE = [col1] from TBL_BA where DATE = @id_Date
SET @FINAL = @OLD_NAV_VALUE * 50
但我在这里遇到的问题是,作为 [col1] 给出的 select 语句中的列名是一个动态值。所以我正在尝试下面这样的事情。
DECLARE @OLD_NAV_VALUE AS INT
DECLARE @FINAL AS INT
EXEC('SELECT @OLD_NAV_VALUE = [' + @DYNAMIC_COL_NAME + '] from TBL_BA where DATE = ' + @id_Date)
SET @FINAL = @OLD_NAV_VALUE * 50
这给出了必须声明@OLD_NAV_VALUE 的错误。所以我尝试在 EXEC 语句中声明@OLD_NAV_VALUE。但如果我这样做,我将无法在 EXEC 语句之外使用相同的语句。
请告诉我该怎么做。
最佳答案
您还可以使用带输出参数的sp_executesql语句:
declare @field nvarchar(50);
set @field = N'FieldToSelect';
declare @sql nvarchar(3000);
declare @parmDefinition nvarchar(500);
SET @parmDefinition = N'@returnValueOUT nvarchar(50) OUTPUT';
set @sql = N'SELECT @ReturnValueOUT = ' + @Field + ' FROM [TableName] WHERE [SomeCondition]'
declare @returnValue nvarchar(50);
EXECUTE sp_executesql @sql, @parmDefinition, @returnValueOut = @returnValue OUTPUT;
SELECT @returnValue
关于sql - 更新一个变量的动态sql语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/536728/