[Q]:在mysql中创建UDF语法错误
[Q]:Syntax error in creating UDF in mysql
大家好,对于这个菜鸟问题,我很抱歉,我正在努力学习 mysql,但我一直在创建 udf。有人可以解释为什么这是语法错误以及可能的修复方法是什么。谢谢
create FUNCTION temtotalgrades
(@p_Studid int, @p_year int)
RETURNS int
BEGIN
return (SELECT CONCAT( fname, " ", lname, '\n', GROUP_CONCAT
(student_grades.subject_id, " = ", student_grades.final SEPARATOR '\n' ) )
FROM student_grades
INNER JOIN student ON student.studid = student_grades.studid
where student.studid = @p_Studid and year = @p_year
GROUP BY student_grades.studid)
END
几点...
一个函数return是一个单一的值。
值 return 需要对应于为 RETURNS 指定的类型。
@
字符用于命名用户自定义变量,不用于procedure/functionvariables/parameters.
举个例子,尝试这样的事情:
DELIMITER $$
CREATE FUNCTION temtotalgrades
( p_studid INT
, p_year INT
) RETURNS VARCHAR(4000)
BEGIN
DECLARE v_myret VARCHAR(4000);
SELECT CONCAT( s.fname
, ' '
, s.lname
, '\n'
, GROUP_CONCAT(
CONCAT(g.subject_id,' = ',g.final)
SEPARATOR '\n'
)
)
INTO v_myret
FROM student_grades g
JOIN student s ON s.studid = g.studid
WHERE s.studid = p_studid
AND g.year = p_year;
RETURN v_myret;
END$$
DELIMITER ;
大家好,对于这个菜鸟问题,我很抱歉,我正在努力学习 mysql,但我一直在创建 udf。有人可以解释为什么这是语法错误以及可能的修复方法是什么。谢谢
create FUNCTION temtotalgrades
(@p_Studid int, @p_year int)
RETURNS int
BEGIN
return (SELECT CONCAT( fname, " ", lname, '\n', GROUP_CONCAT
(student_grades.subject_id, " = ", student_grades.final SEPARATOR '\n' ) )
FROM student_grades
INNER JOIN student ON student.studid = student_grades.studid
where student.studid = @p_Studid and year = @p_year
GROUP BY student_grades.studid)
END
几点...
一个函数return是一个单一的值。
值 return 需要对应于为 RETURNS 指定的类型。
@
字符用于命名用户自定义变量,不用于procedure/functionvariables/parameters.
举个例子,尝试这样的事情:
DELIMITER $$
CREATE FUNCTION temtotalgrades
( p_studid INT
, p_year INT
) RETURNS VARCHAR(4000)
BEGIN
DECLARE v_myret VARCHAR(4000);
SELECT CONCAT( s.fname
, ' '
, s.lname
, '\n'
, GROUP_CONCAT(
CONCAT(g.subject_id,' = ',g.final)
SEPARATOR '\n'
)
)
INTO v_myret
FROM student_grades g
JOIN student s ON s.studid = g.studid
WHERE s.studid = p_studid
AND g.year = p_year;
RETURN v_myret;
END$$
DELIMITER ;