我是 MySQL 存储过程的新手,我正在学习如何使用它们的一些教程,但我遇到了以下有趣的事情:
DELIMITER $$
CREATE DEFINER=`user`@`%` PROCEDURE `CalculateScores`(IN ID INT, OUT test INT)
BEGIN
SELECT COUNT(*)
INTO test
FROM myTable
WHERE id = ID;
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
我用这个运行它:
CALL CalculateScores(252, @test);
Run Code Online (Sandbox Code Playgroud)
然后只是:
SELECT @test;
Run Code Online (Sandbox Code Playgroud)
奇怪的是@test返回整个表的总行数,而不仅仅是id作为参数发送的I 。
我在这里缺少什么?本教程从未提及这一点,我无法找到为什么会发生这种情况的答案,我可能不擅长搜索..