0
전 평생 처음 MySQL을 저장하는 함수를 작성하고 있으며,이 경험이없는 나에게도 어리석은 뭔가가 붙어 있습니다.MySQL CREATE FUNCTION 문이 WHERE 조건을 무시하는 것 같습니다.
이것은 내가 지금까지 쓴 것입니다 :이 SELECT credits_per_course(1019, 262)
를 사용하여 전화
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에는 4 개의 강의가 있습니다. 이 함수를 실행하면 2462 개의 레슨이 생깁니다. 이것은 모든 레슨의 카운트입니다.
- 가
SELECT COUNT(*)
쿼리 후 라인SET lessons_count = 42;
을 추가하고 42 반환 :테스트를 위해, 나는하려
- 99999와 같은 존재하지 않는 코스 ID를 사용하여 WHERE 절을 변경하면 올바르게 0 수업을 반환합니다.
- WHERE 절을 명시 적으로 1019 코스 ID를 전달하지만 여전히 2462 레슨을 제공합니다.
- 은 코스 번호가 1019 인
SELECT COUNT(*)
쿼리 외부에서 실행하려고 시도하고 4 개의 강의를 반환합니다.
내가 아마 바보 같은 실수를하고 있음을 알고 있지만, 내가하는 일을 알아낼 수 없습니다 ...
매개 변수 COURSE_ID가 필드 이름 course_id와 같으므로 이름을 변경하십시오. – JohnHC
너. 만든. 나의. 일. 정말 고마워! – ciamiz
자체 답변 질문이나 그것을 삭제합니까? – Drew