Mysql 在存储过程中使用临时表是一种好做法,还是应该使用视图?

Mysql 在存储过程中使用临时表是一种好做法,还是应该使用视图?,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我首先在另外两个视图之间进行了连接,得到了第三个视图,名为AUX,这是过程中的一个视图,现在我想知道在recipe中使用三个临时表是否是更好的方法 DROP PROCEDURE IF EXISTS recipe; DELIMITER $$ CREATE PROCEDURE recipe(pIDrecipe INT, OUT pmessage VARCHAR(255)) SALIR:BEGIN IF pIDrecipe IS NULL

我首先在另外两个视图之间进行了连接,得到了第三个视图,名为AUX,这是过程中的一个视图,现在我想知道在recipe中使用三个临时表是否是更好的方法

DROP PROCEDURE IF EXISTS recipe;
    DELIMITER $$
    CREATE PROCEDURE recipe(pIDrecipe INT, OUT pmessage VARCHAR(255))
       SALIR:BEGIN
      
          IF pIDrecipe IS NULL THEN
            SET pmessage="wrong input" ;
            LEAVE SALIR;
    
    ELSEIF NOT EXISTS(SELECT pIDrecipe FROM Recipes WHERE IDrecipe = pIDrecipe)  THEN
        SET pmessage="not exists";
        LEAVE SALIR;
       
    ELSE
        START TRANSACTION;
                SELECT Name,ingredients,steps
                FROM AUX WHERE IDrecipe = pIDrecipe;
                SET pmessage="success" ;
         COMMIT;       
     END IF;
    END $$
    DELIMITER ;

我在您的代码中看不到视图。我想知道您是否需要视图或过程,因为db没有更改,所以事务在这里似乎没有任何用途。提交select是一个有趣的概念,如果您阅读,您可能会看到事务的用途对于非“过程性”的事情使用存储过程是否是一种良好的做法?我被要求使用存储过程来解决问题,但我不相信,因为我认为使用视图已经足够了。