Mysql 存储函数计算不正确的值
我有一个函数,它应该只返回一个元素的值,但这是从每个表返回的Mysql 存储函数计算不正确的值,mysql,function,Mysql,Function,我有一个函数,它应该只返回一个元素的值,但这是从每个表返回的 Function verify(idAluno INT) returns INT BEGIN DECLARE teste INT; SELECT COUNT(status) into teste FROM listapresenca WHERE idAluno = idaluno; RETURN teste; END listapresenca中的值为 idAluno status horario 1
Function verify(idAluno INT) returns INT
BEGIN
DECLARE teste INT;
SELECT COUNT(status) into teste FROM listapresenca WHERE idAluno = idaluno;
RETURN teste;
END
listapresenca中的值为
idAluno status horario
1 ENTROU 2018-09-02 21:46:25
0 NAO 2018-09-02 21:46:43
0 NAO 2018-09-02 21:46:45
0 NAO 2018-09-02 21:46:46
0 NAO 2018-09-02 21:46:48
0 NAO 2018-09-02 21:59:10
放置变量idaluno=1的结果应该是1,但返回6
如果我在函数
之外使用,则从listapresenca中选择COUNT(status),其中idAluno=1
,返回值为1,问题在于表中的列名idAluno
与函数中的参数名idAluno
之间存在冲突,因此,您的WHERE
子句有效地比较了相同的值,并将返回表中的所有数据(因此您的结果为6)。尝试将参数名称更改为,例如searchId
:
CREATE FUNCTION verify(SearchId INT) returns INT
BEGIN
DECLARE teste INT;
SELECT COUNT(status) into teste FROM listapresenca WHERE idAluno = SearchId;
RETURN teste;
END
然后,您可以使用以下工具进行测试:
SELECT verify(1), verify(0)
输出(用于您的数据)
演示这不起作用,当我输入要查找的id值时,它仍然返回6@GuilhermeSeibertZulian我不知道为什么会这样,你可以从演示链接上看到它确实有效。你是不是先删除了旧函数?太好了。很高兴我能帮忙。
verify(1) verify(0)
1 5