【问题标题】:Reversing COLUMN DATA by dynamically passing table name and Column Name通过动态传递表名和列名来反转 COLUMN DATA
【发布时间】:2017-01-27 18:54:08
【问题描述】:

我想通过传递表名和列名来动态反转 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)

但我遇到了这些错误:

消息 156,第 15 级,状态 1,第 1 行
关键字“EXEC”附近的语法不正确。

消息 137,第 15 级,状态 2,第 1 行
必须声明标量变量“@output”

【问题讨论】:

  • 您不能将 EXEC 放在任何查询中。
  • SET @UPDATE_EXEC = 'UPDATE ['+@TABLE_Name + ']'+'SET'+' '+@COLUMN_NAME+ '=REVERSE('+@COLUMN_NAME+')'
  • @AnilAgrawal 请将您的答案作为实际答案而不是 cmets。

标签: sql-server dynamic


【解决方案1】:

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

要反转表格中的任何列,您可以像下面这样操作,

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

执行(@UPDATE_EXEC);

【讨论】:

    猜你喜欢
    • 2020-08-04
    • 1970-01-01
    • 2016-07-05
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    相关资源
    最近更新 更多