저장 프로 시저를 만들려고하는데 잘못된 것으로 보입니다. 필요한 경우 SQL 만 사용하므로 개발자를 용서하고 도와주십시오. 두 테이블 (user_students와 student_grades_summary) 사이에서 내부 조인을 수행하는 SQL 쿼리를 저장 프로 시저에 포함하려고합니다. 여기에 내가 쓴 저장 프로 시저입니다 :사례 명세서를 사용하여 저장 프로 시저 만들기
CREATE PROCEDURE GradeStudents(in scoreover100 float, out s_grade char(3))
BEGIN
CASE
WHEN (student_grades_summary.aggregate >= 80 && student_grades_summary.aggregate <= 100 && student_grades_summary.level = 'JSS') THEN
SET student_grades_summary.grade = 'A1';
WHEN(student_grades_summary.aggregate >= 70 AND student_grades_summary.aggregate <= 79 AND student_grades_summary.level = 'JSS') THEN
SET student_grades_summary.grade = 'B1';
WHEN (student_grades_summary.aggregate >= 60 AND student_grades_summary.aggregate <= 69 AND student_grades_summary.level = 'JSS') THEN
SET student_grades_summary.grade = 'B2';
WHEN(student_grades_summary.aggregate >= 55 AND student_grades_summary.aggregate <= 59 AND student_grades_summary.level = 'JSS') THEN
SET student_grades_summary.grade = 'P1';
WHEN(student_grades_summary.aggregate >= 50 AND student_grades_summary.aggregate <= 54 AND student_grades_summary.level = 'JSS') THEN
SET student_grades_summary.grade = 'P2';
WHEN(student_grades_summary.aggregate <= 49 AND student_grades_summary.level = 'JSS')
SET student_grades_summary.grade = 'F';
WHEN(student_grades_summary.aggregate >= 85 AND student_grades_summary.aggregate <= 100 AND student_grades_summary.level = 'SSS') THEN
SET student_grades_summary.grade = 'A1';
WHEN(student_grades_summary.aggregate >= 80 AND student_grades_summary.aggregate <= 84 AND student_grades_summary.level = 'SSS') THEN
SET student_grades_summary.grade = 'B2';
WHEN(student_grades_summary.aggregate >= 75 AND student_grades_summary.aggregate <= 79 AND student_grades_summary.level = 'SSS') THEN
SET student_grades_summary.grade = 'B3';
WHEN(student_grades_summary.aggregate >= 70 AND student_grades_summary.aggregate <= 74 AND student_grades_summary.level = 'SSS') THEN
SET student_grades_summary.grade = 'C4';
WHEN(student_grades_summary.aggregate >= 65 AND student_grades_summary.aggregate <= 69 AND student_grades_summary.level = 'SSS') THEN
SET student_grades_summary.grade = 'C5';
WHEN(student_grades_summary.aggregate >= 60 AND student_grades_summary.aggregate <= 64 AND student_grades_summary.level = 'SSS') THEN
SET student_grades_summary.grade = 'C6';
WHEN(student_grades_summary.aggregate >= 55 AND student_grades_summary.aggregate <= 59 AND student_grades_summary.level = 'SSS') THEN
SET student_grades_summary.grade = 'D7';
WHEN(student_grades_summary.aggregate >= 50 AND student_grades_summary.aggregate <= 54 AND student_grades_summary.level = 'SSS') THEN
SET student_grades_summary.grade = 'E8';
WHEN(student_grades_summary.aggregate <= 49 AND student_grades_summary.level = 'SSS') THEN
SET student_grades_summary.grade = 'F9';
END CASE;
는 그리고 이것은 내가에서 저장 프로 시저를 포함하는 것을 시도하고있는 SQL 쿼리입니다 기본적으로 내가 student_grades_summary에서 학년 컬럼에 값을 추가하려고하고있는 저장 프로 시저를 사용하여. .
이select user_students.fname as FirstName, user_students.lname as LastName
, student_grades_summary.subject as CoreSubjects
, student_grades_summary.aggregate as Scoreover100
, student_grades_summary.subjectrank as Position
, student_grades_summary.term as Term
, student_grades_summary.level as Level
, student_grades_summary.class as Class
, student_grades_summary.section as Section
, student_grades_summary.session as Session
FROM student_grades_summary
JOIN user_students
ON student_grades_summary.level = user_students.level
AND student_grades_summary.class = user_students.class
AND student_grades_summary.section = user_students.section
JOIN config_grades
ON student_grades_summary.level = config_grades.level
WHERE user_students.level = 'JSS'
AND user_students.class = '2'
AND student_grades_summary.session = '2015/2016'
그래서 phpMyAdmin을에, 내가 SQL에 오류가 말하는 붉은 구불 구불 한 선을 많이 얻을 : 어쨌든 여기에 SQL이다. 나는 코드를보고 오류가 무엇인지 찾아 낼 수는 없지만 시도했다.
업데이트를 사용하지 않고 테이블에 값을 설정하려는 것 같습니다. proc은 case 문에서 임의의 테이블 이름을 이해하지 못합니다. _ 또한, 쿼리에 저장 프로 시저를 포함하거나 포함 할 수 없습니다. _ – Uueerdo