具有动态 SQL 的存储过程,可创建大量结果选项卡

Have Stored Proc with Dynamic SQL that creates loads of results tabs

我用动态查询代码构建了一个 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();

我真的不想要代码中的任何结果选项卡。

一个存储过程可以生成多个结果集,如果您使用 GUI 客户端,这些结果集将显示在单独的选项卡中。每次执行 SELECT 语句时都会发送一个结果集,而不会将其存储在带有

的变量中
SET @var = (SELECT ...)

SELECT .. INTO @var ...

在你的程序中行

select @sql;

将在每次循环迭代中执行,并将结果集发送到客户端。这可能有利于调试 - 但如果您只想执行 @sql 语句而不显示它 - 只需删除该行。