У меня есть этот запрос, и я хочу загрузить исходную таблицу во временную таблицу и просмотреть ее, а если системная дата равна столбцу End, обновить поле Active и удалить первую строку из временной таблицы и следуйте по пути.
DECLARE @count int;
DECLARE @fch2 DATETIME;
create table #Suple(
ID INT,
NUMERO INT,
NOMBRE VARCHAR(50),
MAIL VARCHAR(50),
ACTIVO NCHAR(10),
INICIO DATETIME,
FIN DATETIME
);
INSERT INTO #Suple
SELECT * FROM TablaOriginal where ACTIVO = 1
SELECT @count = COUNT(*) FROM #Suple;
WHILE @count > 0
BEGIN
SELECT @fch2 = FIN FROM #Suple WHERE ACTIVO = 1
IF (GETDATE() = @fch2)
UPDATE TablaOriginal SET ACTIVO = 0
DELETE TOP(1) FROM #Suple
END
DROP TABLE #Suple
Это ошибка:
Имя столбца или количество предоставленных значений не соответствует определению в таблице.
Проблема в том, что если они одинаковы как в таблице темпоров, так и в исходной таблице, то они одинаковы.
Мне не хватало добавлять типы данных о каждом поле, в конце концов временная таблица осталась следующего способа.
create table #Suple(
ID INT Primary Key not null,
NUMERO INT not null,
NOMBRE VARCHAR(50) not null,
MAIL VARCHAR(50) not null,
ACTIVO NCHAR(10) not null,
INICIO DATETIME not null,
FIN DATETIME not null
);