我在MySQL中有一個存儲過程,它從表中獲取下一個唯一的ID,用作另外兩個表的ID(不是最好的方式,我當然,但我在這裏修改別人的代碼)。其過程如下:MySQL存儲過程:沒有設置OUT參數
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工作臺,@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
沒有被正確設置?
與我發生同樣的問題........ :) –