У меня есть две таблицы Table1 и Table2, и я пытаюсь вставить все данные из Table1 в Table2. Для этого у меня есть оператор Insert Into, который вставляет пакетами, как показано ниже
CREATE PROCEDURE insert_table_data @tp_int INT AS
DECLARE @rc INT
SET @rc = 1
WHILE @rc > 0
BEGIN
BEGIN TRANSACTION
INSERT INTO table_2(
col1,
col2,
time_period
)
SELECT TOP (500) col1, col2, @tp_int FROM table_1
DELETE TOP (500) FROM table_1
SET @rc = @@ROWCOUNT
COMMIT TRANSACTION;
END
В идеале я хотел бы сделать это без использования оператора Delete. Когда я вынимаю оператор удаления, сохраненные процы застревают в al oop. Я предполагаю, что это потому, что он продолжает выбирать Top (500) из table_1, не продвигаясь дальше вниз по записям. Любые идеи о том, как изменить хранимые процы?