简体   繁体   English

mySQL查询函数的语法错误,将小数等级转换为字母等级

[英]Syntax error with mySQL query function to convert decimal grade to a letter grade

I'm having troubles with a syntax error when trying to create a function in MySQL to convert a decimal grade into a letter grade. 尝试在MySQL中创建函数以将小数等级转换为字母等级时,我遇到语法错误的麻烦。

What could be the issue? 可能是什么问题?

ERROR 1064 (42000): You have an error in your SQL syntax; 错误1064(42000):您的SQL语法有错误; check the manual that corresponds to your mySQL server version for the right syntax to use near 'conv(gpa DOUBLE) RETURNS CHAR BEGIN 检查与mySQL服务器版本对应的手册,以便在'conv(gpa DOUBLE)RETURNS CHAR BEGIN附近使用正确的语法
DECLARE grade CHAR; DECLARE等级CHAR;
SELECT CASE WHEN gp' at line 1 在第1行选择gp'时的情况

Here is my code: 这是我的代码:

delimiter $

CREATE FUNCTION conv(gpa DOUBLE) 
RETURNS CHAR
BEGIN 

DECLARE grade CHAR; 

SELECT CASE WHEN gpa BETWEEN 3.5 AND 4.0 THEN 'A' 
WHEN gpa BETWEEN 3.0 AND 3.4 THEN 'B' 
WHEN gpa BETWEEN 2.5 AND 2.9 THEN 'C' 
WHEN gpa BETWEEN 2.0 AND 2.4 THEN 'D' 
ELSE 'F' 
END INTO grade 

RETURN grade;

END $

You're missing a semi-colon near the end: 你在结尾附近错过了一个分号:

SELECT CASE WHEN gpa BETWEEN 3.5 AND 4.0 THEN 'A' 
WHEN gpa BETWEEN 3.0 AND 3.4 THEN 'B' 
WHEN gpa BETWEEN 2.5 AND 2.9 THEN 'C' 
WHEN gpa BETWEEN 2.0 AND 2.4 THEN 'D' 
ELSE 'F' 
END INTO grade;

Also, you probably shouldn't use the name conv as this is already means something else . 此外,您可能不应该使用名称conv因为这已经意味着其他内容

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM