我在 MySQL 中有一个存储过程,它从表中获取下一个唯一 ID,用作其他 2 个表的 ID(我敢肯定,这不是最好的方法,但我正在修改其他人的代码这里)。程序如下:
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `GetNextID`( OUT id bigint )
BEGIN
DECLARE uid VARCHAR(255);
SET uid = uuid();
INSERT INTO `ident_column_generator` (u) VALUES (uid);
SELECT ID INTO id FROM `ident_column_generator` WHERE u = uid;
DELETE FROM `ident_column_generator` WHERE u = uid;
END$$
当我从 MySQL Workbench 调用该过程时:
CALL GetNextID( @id );
SELECT @id;
@id 是NULL
. 我无法弄清楚出了什么问题?即使我SET @id = 0;
在调用该过程之前运行,之后它也会以 NULL 结束。如果我从 MySQL Workbench 手动调用过程中的函数,则@id
输出正常,例如:
SET @uid = uuid();
INSERT INTO `ident_column_generator` (u) VALUES (@uid);
SELECT ID INTO @id FROM `ident_column_generator` WHERE u = @uid;
DELETE FROM `ident_column_generator` WHERE u = @uid;
SELECT @id;
这会将@id 输出为有效数字。
任何想法为什么id
没有正确设置?