MySQL 存储过程变量 - 何时使用哪个

MySQL Stored Procedure Variables - When to Use Which

我是 MySQL 的新手。我们什么时候使用声明的变量?何时使用未声明的变量 (@varTest).

我想知道最佳做法。谢谢。

您应该始终使用 DECLARE 创建程序变量以保持适当的范围。在函数外声明的会话变量可以在函数内改变,vice-versa.

DROP PROCEDURE IF EXISTS foo;
DELIMITER $

CREATE PROCEDURE foo()
    BEGIN
        DECLARE foo INT;
        SET foo = 123;
        SET @foo = 456;
        SELECT foo, @foo;
    END$

DELIMITER ;

SET @foo = "BAR";
CALL foo();
SELECT @foo;