create procedure proc_Grade(in roll int(5),in name varchar(20),in marks int(5))
-> begin
-> declare grade varchar(20);
-> insert into student values(roll,name,marks);
-> if marks<=100 and marks>=67 then set grade="distinction";
-> if marks<=66 and marks>=57 then set grade="firstclass";
-> if marks<=56 and marks>=47 then set grade="secdclass";
-> if marks<=46 and marks>=40 then set grade="pass";
-> else set grade="fail";
-> insert into result values(roll,grade);
-> end if;
-> end$$
错误1064(42000):您的sql语法有错误;请查看与mysql服务器版本对应的手册,以获取第12行“”附近要使用的正确语法
下面是命令行客户端的屏幕截图
1条答案
按热度按时间dy1byipe1#
当错误信息出现时,这一条尤其没有帮助。
还有两个问题:
第二个insert语句(result)的位置,该语句只适用于课程“不及格”的学生。
if语句语法,其中第二个if及其后的if应为elseif,或者应使用end if终止每个if语句;
语法应为
文档位于https://dev.mysql.com/doc/refman/5.7/en/if.html (尽管要注意输入错误,因为它遗漏了if结尾后的分号;)
您的程序如下所示: