Я хотел бы выполнить блок из нескольких запросов MySQL одновременно (последовательно, а не параллельно). Мне не нужно, чтобы операция была атомарной. Вот игрушечный пример:

Я могу сделать это в MySQL Workbench, переместив курсор с одной строки на следующую и нажав Ctrl + Enter. Более того, я могу выделить блок и нажать Ctrl + Shift + Enter.
Однако, если я хочу быстро пройти через несколько таких блоков, становится неудобно выбирать каждый блок отдельно. Я ожидаю, что смогу превратить это в процедуру:
DELIMITER //
CREATE PROCEDURE do_sum()
BEGIN
CREATE TABLE IF NOT EXISTS ttt (col INT);
LOAD DATA INFILE "/var/lib/mysql-files/data.csv" INTO TABLE ttt;
SET @my_sum := (SELECT SUM(col) FROM ttt);
DROP TABLE ttt;
SELECT @my_sum;
END//
DELIMITER ;
К сожалению, это не с Error Code 1314. LOAD DATA is not allowed in stored procedures
. Как объясняется в документации, внутри процедур работает только подмножество команд, исключая такие вещи, как LOAD DATA
.
Я бы хотел либо
- превратить запрос в составной запрос, как в
bash
можно выполнить echo a && echo b
. (Я пробовал BEGIN ... END
, но, похоже, он не работает вне конструкции, подобной CREATE PROCEDURE
.)
- как-то указывает MySQL Workbench, что если я нажму Ctrl + Enter, когда курсор находится где-нибудь внутри этого блока, то запросы должны выполняться вместе (MySQL Workbench помещает синий кружок между каждым запросом и номером первой строки, поэтому я бы хотел, чтобы на скриншоте выше был один синий кружок.)
Возможно ли это?