Я пытаюсь написать хранимую процедуру в SQL Server (2005), чтобы сделать что-то, что звучит просто, но на самом деле оказывается сложнее, чем я думал.
У меня есть таблица с 30 столбцами и 50 000 строк.
Количество записей фиксировано, но пользователи могут редактировать поля существующих записей.
Чтобы избавить их от необходимости повторного ввода повторяющихся данных, я хочу дать им возможность выбрать запись и указать диапазон идентификаторов, в которые нужно скопировать эти данные.
SP, который я пытаюсь записать, примет 3 параметра: первичный ключ исходной записи и нижний и верхний первичные ключи диапазона записей, в которые будут копироваться данные.
Очевидно, что PK записей назначения остаются без изменений.
Итак, я подумал, что SP должен сделать SELECT - чтобы получить все данные, которые нужно скопировать, и UPDATE - чтобы записать данные в указанные записи назначения.
Я просто не знаю, как сохранить результаты SELECT, чтобы вставить их в ОБНОВЛЕНИЕ.
Временная таблица не помогла бы - выбор из этого был бы таким же, как выбор из таблицы!
Мне нужна переменная, которая фактически является единственной записью, поэтому я могу сделать что-то вроде:
@tempRECORD = SELECT * FROM SOURCETABLE WHERE ID = @sourcePK
UPDATE SOURCETABLE
SET FIELD1 = @tempRECORD.FIELD1,
FIELD2 = @tempRECORD.FIELD2,
...
FIELD30 = @tempRECORD.FIELD30
WHERE ID >= @LOWER_id AND ID <= @UPPER_id
Но я не знаю, как, или если вы даже можете.
Я также открыт для любого другого умного способа, о котором я даже не думал!
Спасибо, ребята!