代码之家  ›  专栏  ›  技术社区  ›  Victor

当在存储过程中使用时,是否应释放准备好的语句?

  •  5
  • Victor  · 技术社区  · 15 年前

    在存储过程中使用准备好的语句时,是否应在过程结束时释放它们,或者不重要,为什么?

    要解释的一些代码:

    CREATE PROCEDURE getCompanyByName (IN name VARCHAR(100))
    NOT DETERMINISTIC
    BEGIN
      PREPARE gcbnStatement FROM 'SELECT * FROM Companies WHERE name=? LIMIT 1';
      SET @companyName = name;
      EXECUTE gcbnStatement USING @companyName;
      DEALLOCATE PREPARE gcbnStatement;
    END $$
    

    那么-deallocate语句是否应该存在?干杯!

    胜利者

    2 回复  |  直到 6 年前
        1
  •  5
  •   skaffman    15 年前

    根据 MySQL docs :

    准备好的声明特定于 创建它的会话。 如果在没有 解除分配先前准备的 语句,服务器释放它 自动地。

    所以,不,除非您有非常长的运行会话,否则我不会费心显式地做这件事。

        2
  •  1
  •   Chris Lampley    15 年前

    如果您使用连接池,那么解除它们的分配绝对是一个好主意。