MySQL CREATE FUNCTION 语句似乎忽略了 WHERE 条件

MySQL CREATE FUNCTION statement seems to ignore WHERE condition

我正在编写我一生中的第一个 MySQL 存储函数,但我遇到了一些即使对我没有这方面经验的人来说也很愚蠢的事情。

这是我到现在为止写的:

CREATE FUNCTION `credits_per_course`(COURSE_ID INT, USER_ID INT)
RETURNS int(11)
BEGIN

  DECLARE users_credits INT;

  DECLARE course_credits INT;
  DECLARE course_mandatory_credits INT;
  DECLARE course_total_credits INT;

  DECLARE lessons_count INT;

  DECLARE lessons CURSOR FOR
          SELECT * FROM t_lessons WHERE course_id = COURSE_ID;

  SELECT COUNT(*) INTO lessons_count FROM t_lessons WHERE course_id = COURSE_ID;

RETURN lessons_count;
END

我用 SELECT credits_per_course(1019, 262) 来称呼它。 magic numbers是我知道课时数和测试用户的课程,在这个功能点上还是忽略了。

1019 课程有四节课。如果我 运行 这个函数,它会给我 2462 节课,这是所有课的总数。

为了测试,我尝试了:

我知道我可能犯了一些愚蠢的错误,但我不知道是哪个...

正如 JohnHC 指出的那样,这是我对参数名称不区分大小写的无知的问题。

因此,一旦将参数名称更改为 CIDUID 之类的名称,它就可以正常工作。

谢谢!