通过动态传递表名和列名来反转COLUMN DATA

时间:2017-01-27 04:03:08

标签: sql-server dynamic

我想通过传递表名和列名

来动态反转COLUMN DATA
DECLARE @TABLE_NAME  NVARCHAR(300)   -- to pass table name dynamically
DECLARE @COLUMN_NAME NVARCHAR(300)   -- to pass column name dynamically

SET @TABLE_NAME = 'TEST1'   -- Passing table name
SET @COLUMN_NAME = 'SSN'    -- Passing column Name

DECLARE @OUTPUT NVARCHAR(MAX)   -- to pass the selected column data to update

SET @OUTPUT = 'SELECT'+' '+@COLUMN_NAME+' '+'FROM'+@TABLE_NAME

DECLARE @UPDATE_EXEC NVARCHAR(MAX)    -- To exec the Final update result 
SET @UPDATE_EXEC = 'UPDATE ['+@TABLE_Name + ']'+'SET'+' '+@COLUMN_NAME+
'=REVERSE(EXEC (@output))'

EXEC(@UPDATE_EXEC)

但是我收到了这些错误:

  

第15行,第1行,第1行,第1行   关键字' EXEC'附近的语法不正确。

     

Msg 137,Level 15,State 2,Line 1
  必须声明标量变量" @ output"

1 个答案:

答案 0 :(得分:0)

您正在尝试将EXEC放入更新查询中,但不允许这样做。 EXEC用于执行查询,它不能是任何查询的一部分。

要反转表格中的任何列,您可以执行以下操作,

  

SET @UPDATE_EXEC ='UPDATE ['+ @ TABLE_Name +']'+'SET'+''+ @ COLUMN_NAME +'= REVERSE('+ @ COLUMN_NAME +')';

     

EXEC(@UPDATE_EXEC);