我在我的整个人生中都在编写第一个MySQL存储函数,而且即使对我没有经验,我也会遇到一些看似愚蠢的事情。
这是我直到现在所写的:
for /?
我使用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
来调用它。神奇的数字是我知道课程数量和测试用户的一个过程,在此功能的这一点仍然被忽略。
课程1019有四节课。如果我运行该功能,它会给我2462课,这是所有课程的计数。
为了测试,我尝试:
SELECT credits_per_course(1019, 262)
查询后添加一行SET lessons_count = 42;
,然后返回42; SELECT COUNT(*)
查询,课程编号为1019,并返回4课程。我知道我可能犯了一些愚蠢的错误,但我无法弄清楚哪一个......
答案 0 :(得分:0)
正如JohnHC所说,这是一个问题,我对参数名称不区分大小写的情况一无所知。
因此,一旦将参数名称更改为CID
和UID
,它就能正常运行。
谢谢!