У меня есть таблица (скажем, 'A'), которая содержит список всех таблиц в базе данных. Я определил курсор, который перебирает имя таблицы в 'A'. Я хочу обновить столбец таблицы, определенный в курсор.
Я создал 2 курсора. Один для итерации по именам таблиц и другой для итерации по именам столбцов.
DECLARE @MyCursor CURSOR;
DECLARE @MyField nvarchar(255);
BEGIN
SET @MyCursor = CURSOR FOR
select distinct Table_name from DataTable where Data <>'No'
set @a=0
OPEN @MyCursor
FETCH NEXT FROM @MyCursor
INTO @MyField
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @column_cursor CURSOR;
DECLARE @columnField nvarchar(255);
SET @column_cursor = CURSOR FOR
select Column_name from DataTable where TABLE_NAME=@MyField and Data
<>'No'
OPEN @column_cursor
FETCH NEXT FROM @column_cursor
INTO @columnField
WHILE @@FETCH_STATUS = 0
BEGIN
update @MyField set @columnField=''+@MyField+'_'+@columnField+@a
FETCH NEXT FROM @column_cursor
INTO @columnField
END;
CLOSE @column_cursor ;
DEALLOCATE @column_cursor;
FETCH NEXT FROM @MyCursor
INTO @MyField
END;
CLOSE @MyCursor ;
DEALLOCATE @MyCursor;
END;
Здесь в операторе обновления @MyField выдает ошибку: «Необходимо объявить переменную таблицы @MyField».