Хранимая процедура для удаления частями — LOOP не выполняетсяMySql

Форум по Mysql
Ответить
Anonymous
 Хранимая процедура для удаления частями — LOOP не выполняется

Сообщение Anonymous »

Проблема: цикл не выполняется после первого цикла.

Код: Выделить всё

CREATE PROCEDURE IF NOT EXISTS chunk_delete(IN table_name varchar(255), IN loop_count int, IN batch_size int)
BEGIN
DECLARE counter INT DEFAULT 0;
DECLARE rows_affected INT DEFAULT 1;
DECLARE delete_query TEXT;
WHILE counter  0 DO
SET delete_query = CONCAT('DELETE FROM ', table_name, ' LIMIT ', batch_size);
SELECT delete_query;
SET @sql_query = delete_query;
PREPARE stmt FROM @sql_query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET rows_affected = ROW_COUNT();
SET counter = counter + 1;
END WHILE;
END
Ожидаемый результат:
Если число циклов равно 4, а размер пакета равен 10, результатом будет удаление 40 строк после 4 циклов. Однако цикл не реализуется после удаления первого пакета размером 10 строк.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -executing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»