动态sql查询输入和输出值传入变量

时间:2012-11-19 10:08:51

标签: sql-server tsql dynamic-sql

传递列名称&动态赋值并将查询结果转换为另一个变量。

@ColumnName , @SKU_ID are input variables, output data store into @ColumnValue variable.
DECLARE @ColumnName
char(50)
DECLARE @SKU_ID
varchar(50)
DECLARE @ColumnValue
varchar(150)
DECLARE @Sqlcommand
nvarchar(1000)
DECLARE @ColumnData
varchar(50)

SET @ColumnName = 'Color_Code'
SET @SKU_ID  = 'W16933'

SET @Sqlcommand = 'SELECT @ColumnData ='+@ColumnName+ 'FROM Stagetable WHERE SKU_ID = @SKU_ID' 
exec sp_executesql @Sqlcommand, N'ColumnData varchar(50) out' , @ColumnValue out

我遇到错误

Msg 102,Level 15,State 1,Line 1 'ColumnData'附近的语法不正确。 Msg 137,Level 15,State 1,Line 1 必须声明标量变量“@ColumnData”。 请帮帮我。

1 个答案:

答案 0 :(得分:1)

您需要在变量声明前加上@

exec sp_executesql 
    @Sqlcommand, 
    N'@ColumnData varchar(50) out, @SKU_ID varchar(50)' , 
    @ColumnValue out, @SKU_ID