数据库创建存储过程语法错误,如何解决?

题目:创建存储过程 P4,输入某课程名,查询该课程的平均分,选课人数并输出之。运行之


CREATE PROCEDURE P4(IN course_name VARCHAR(30), OUT avg_grade DECIMAL(4,1), OUT num_students INT)
BEGIN
    SELECT AVG(grade) INTO avg_grade, COUNT(sno) INTO num_students
    FROM sc join cou on cou.CNO =sc.CNO 
    WHERE cname=course_name
    group by sc.cno
END

img


 一直说语法错误但是感觉没有错啊

应该是因为你的代码没有定义分隔符,所以无法正常运行吧,下面我给了一个存储过程的代码结构,可以看到需要用delimiter定义一个分隔符,这个例子用的是“$", 你也可以用别的。 存储过程的代码在分隔符的包裹中。

delimiter  $
CREATE PROCEDURE 存储过程名称(入参的名称和类型)
BEGIN
   代码主体
END$
delimiter ;
    SELECT AVG(grade) INTO avg_grade, COUNT(sno) INTO num_students
改成
    SELECT AVG(grade) , COUNT(sno)  INTO avg_grade ,num_students


CREATE PROCEDURE P4(IN course_name VARCHAR(30), OUT avg_grade DECIMAL(4,1), OUT num_students INT)
BEGIN
    SELECT AVG(grade) , COUNT(sno) INTO   avg_grade,num_students
    FROM sc join cou on cou.CNO =sc.CNO 
    WHERE cname=course_name
    group by sc.cno;
END;