Храните Proc с динамическим SQL, который создает множество вкладок результатов - PullRequest
0 голосов
/ 24 мая 2019

Я создал SP с динамическим кодом запроса.Проблема в том, что каждый раз, когда он что-то делает, он отправляет что-то на новую вкладку результатов.Ниже приведена сокращенная версия кода.

CREATE PROCEDURE p()
BEGIN
    DECLARE x,z  INT;
    SET x = 0;
    SET z = 0;

    while z <= 9 DO 

        INSERT INTO loop_log (time, note) VALUES (NOW(), z);

        /* Code block 1 - drop tables prior to creation*/
        set @sql= (select concat('DROP TABLE if EXISTS table',z));

        select @sql;
        prepare sqlstmt from @sql;
        execute sqlstmt;
        deallocate prepare sqlstmt;


        /* Code block 2 - create mini visit tables */
        /* Loads of other code blocks */

        SET z=z+1; 

    END WHILE;

END$$
DELIMITER ;

CALL p();

Я действительно не хочу вкладку результатов из кода.

1 Ответ

1 голос
/ 24 мая 2019

Хранимая процедура может генерировать несколько наборов результатов, которые будут отображаться на отдельных вкладках, если вы используете клиент с графическим интерфейсом.Набор результатов отправляется каждый раз, когда вы выполняете инструкцию SELECT, не сохраняя ее в переменной с

SET @var = (SELECT ...)

или

SELECT .. INTO @var ...

В вашей процедуре строка

select @sql;

будет ожидаться в каждой итерации цикла, и набор результатов будет отправляться клиенту.Это может быть полезно для отладки - но если вы просто хотите выполнить оператор @sql, не показывая его - просто удалите эту строку.

...