我有一个包含employees的mysql表,每个employee的列分别为surname和workhours。我正在尝试创建一个存储函数,它接受一个字母作为输入,并返回其姓氏从输入字母开始的所有员工的工作时间总和。.This基本上是一项简单的任务,但我是一个完全的sql初学者,我需要您的帮助。
我尝试过的:
CREATE FUNCTION sumOfTotalSickHours(letter CHAR(1))
RETURNS DOUBLE DETERMINISTIC
BEGIN
DECLARE total DOUBLE DEFAULT 0
SELECT SUM(sickleavehours) INTO total
FROM employee where lastName LIKE '@letter%'
RETURN total
END使用上面的代码,我得到了一个语法错误,因为我不知道如何正确地编写查询。
发布于 2021-01-29 06:19:09
首先,每条语句都需要以分号(;)结尾。
请务必阅读https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html以了解如何在定义存储程序时使用分隔符。
此外,要引用输入变量,请不要在内部加上引号。
不要使用@letter,因为使用@符号的变量与不使用符号的变量不同。
举个例子:
CREATE FUNCTION sumOfTotalSickHours(letter CHAR(1))
RETURNS DOUBLE DETERMINISTIC
BEGIN
DECLARE total DOUBLE DEFAULT 0;
SELECT SUM(sickleavehours) INTO total
FROM employee where lastName LIKE CONCAT(letter, '%');
RETURN total;
ENDhttps://stackoverflow.com/questions/65945990
复制相似问题