Выполнение блоков кода с MySQL Workbench - PullRequest
0 голосов
/ 10 января 2019

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

enter image description here

Я могу сделать это в 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 помещает синий кружок между каждым запросом и номером первой строки, поэтому я бы хотел, чтобы на скриншоте выше был один синий кружок.)

Возможно ли это?

...