我正在使用 MariaDB 版本 10.3.28-MariaDB-cll-lve
这个网站https://mariadb.com/kb/en/user-defined-variables/说
用户定义的变量名称前面必须有一个 at 字符 (@)
这就是我通常做的事情,但最近我很着急,忘记了 '@ 并编写了以下函数,该函数似乎可以正常工作,而变量前面没有 '@'。
那么在用户定义的变量前面有一个'@'是一个固定的要求吗?
如果是,为什么没有它我的功能可以正常工作?
DELIMITER $$
CREATE FUNCTION get_next_redacted_member_id() RETURNS INT(11)
BEGIN
DECLARE result INT SIGNED;
DECLARE lastid INT;
INSERT INTO redacted_member_id ( date_used) VALUES ( NOW() );
SET lastid = (SELECT LAST_INSERT_ID() );
SET result = -1 * lastid ;
RETURN result;
END$$
DELIMITER ;
主要区别在于您可以在存储函数和过程中使用 DECALRE
见手册
见手册
这意味着每个用户定义的变量都可以在每个位置(在会话中)访问,而不仅仅是在存储过程/函数中。因此,您在存储过程中设置用户定义的变量,您可以在存储过程结束后获取值。这对于调试此类过程/功能非常有帮助。
此外,当您
DECLARE
使用变量时,您还可以设置其数据类型和大小。使用用户定义的 MySQL 决定当您需要什么时
SET @a = 123455
代替
和
并折腾两个声明。
如果您有更复杂的案例,请继续。