2017-01-27 1 views
0

Я хочу обратить столбец данных динамически, передавая имя таблицы и столбцареверса столбец данных путем динамического прохождения имени таблицы и столбца Имя

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'+' '[email protected]_NAME+' '+'FROM'[email protected]_NAME 

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

EXEC(@UPDATE_EXEC) 

Но я получаю эти ошибки:

Msg 156, Level 15, State 1, Line 1
Неверный синтаксис рядом с ключевым словом «EXEC».

Msg 137, Level 15, состояние 2, строка 1
Необходимо объявить скалярную переменную "@output"

+0

Вы не можете помещать EXEC в любой запрос. –

+0

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

+0

@AnilAgrawal Пожалуйста, внесите ваши ответы в качестве реальных ответов, а не Комментарии. – iamdave

ответ

0

Вы пытаетесь поставить EXEC в запросе обновления, его не допускается. EXEC используется для выполнения запроса, он не может быть частью какого-либо запроса.

Чтобы изменить любой столбец в вашей таблице вы можете сделать так, как показано ниже,

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

EXEC (@UPDATE_EXEC);