gpt4 book ai didi

MySQL 存储过程返回错误值

转载 作者:可可西里 更新时间:2023-11-01 08:04:27 25 4
gpt4 key购买 nike

我是 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 ;

我用这个运行它:

CALL CalculateScores(252, @test);

然后就是:

SELECT @test;

奇怪的是,@test 返回整个表的总行数,而不仅仅是我作为参数发送的 id

我在这里错过了什么?本教程从未提及这一点,我找不到为什么会发生这种情况的答案,我可能不擅长搜索..

最佳答案

看起来 MySQL 无法区分 idID:

SELECT COUNT(*)
INTO test
FROM myTable
WHERE id = ID;

它像 1 = 1 一样对待它,它始终为真(如果列不可为空)。


您可以添加别名来指示 id 是列而不是参数。

CREATE PROCEDURE `CalculateScores`(IN ID INT, OUT test INT)
BEGIN
SELECT COUNT(*)
INTO test
FROM myTable t
WHERE t.id = ID;
END

db<>fiddle demo

关于MySQL 存储过程返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36725954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com