Sql server 将列名输入到变量并使用游标更新输入列值

Sql server 将列名输入到变量并使用游标更新输入列值,sql-server,tsql,cursor,dynamic-sql,Sql Server,Tsql,Cursor,Dynamic Sql,尝试从表中获取表名和列名的输入(具有要修改的表和列的列名)并修改表的列值(从要修改的表接收的输入) 您的问题可能在这里: SET @TABLE_1='TABLE_NAME'-- INPUT TABLE_NAME SET @COLUMN_NAME='COLUMN_NAME'--INPUT COLUMN_NAME Fetch语句将值放入每个记录的变量中。在这些set语句中,您将它们重新设置为“TABLE_NAME”和 DECLARE INPUT_CURSOR CURSOR FOR /*Actu

尝试从表中获取表名和列名的输入(具有要修改的表和列的列名)并修改表的列值(从要修改的表接收的输入)


您的问题可能在这里:

SET @TABLE_1='TABLE_NAME'-- INPUT TABLE_NAME
SET @COLUMN_NAME='COLUMN_NAME'--INPUT COLUMN_NAME
Fetch语句将值放入每个记录的变量中。在这些set语句中,您将它们重新设置为“TABLE_NAME”和

DECLARE INPUT_CURSOR CURSOR FOR 

/*Actual Table contains which Table and Column to modify*/
SELECT TABLE_NAME, COLUMN_NAME FROM INPUT 

/*Cursor invokes each table and column name to be modified Passed to
@Table_1,@Column_Name*/
OPEN INPUT_CURSOR
DECLARE @TABLE_1 NVARCHAR(300)--Passing Table name  to Modify
DECLARE @COLUMN_NAME NVARCHAR(300)--Passing Column name to modify
FETCH NEXT FROM INPUT_CURSOR INTO @TABLE_1, @COLUMN_NAME
WHILE @@FETCH_STATUS=0
BEGIN
DECLARE @EXEC_SQL NVARCHAR(MAX)--To execute Dynamic SQL Update Statement
SET @EXEC_SQL= 'UPDATE'+'  ['+@TABLE_1+'] '+'SET'+'  '+@COLUMN_NAME+ 
'=REVERSE( (999999999-'+@COLUMN_NAME+'))'
EXEC(@EXEC_SQL)
FETCH NEXT FROM INPUT_CURSOR INTO @TABLE_1,@COLUMN_NAME
END
CLOSE INPUT_CURSOR
DEALLOCATE INPUT_CURSOR
DECLARE INPUT_CURSOR CURSOR FOR 

/*Actual Table contains which Table and Column to modify*/
SELECT TABLE_NAME, COLUMN_NAME FROM INPUT 

/*Cursor invokes each table and column name to be modified Passed to
@Table_1,@Column_Name*/
OPEN INPUT_CURSOR
DECLARE @TABLE_1 NVARCHAR(300)--Passing Table name  to Modify
DECLARE @COLUMN_NAME NVARCHAR(300)--Passing Column name to modify
FETCH NEXT FROM INPUT_CURSOR INTO @TABLE_1, @COLUMN_NAME
WHILE @@FETCH_STATUS=0
BEGIN
DECLARE @EXEC_SQL NVARCHAR(MAX)--To execute Dynamic SQL Update Statement
SET @EXEC_SQL= 'UPDATE'+'  ['+@TABLE_1+'] '+'SET'+'  '+@COLUMN_NAME+ 
'=REVERSE( (999999999-'+@COLUMN_NAME+'))'
EXEC(@EXEC_SQL)
FETCH NEXT FROM INPUT_CURSOR INTO @TABLE_1,@COLUMN_NAME
END
CLOSE INPUT_CURSOR
DEALLOCATE INPUT_CURSOR