如何创建确定员工年龄分类的函数

发布于 2025-01-11 18:07:59 字数 1092 浏览 3 评论 0原文

我正在为一堂课做作业,我应该确定该人的年龄是否在以下类别之一之间:

AGE            CLASSIFICATION
0-14           Children
15-24          Early working age
25-54          Prime working age 
55-64          Mature working age 
65 and above   Elderly 

这就是我的脚本当前的样子:

DELIMITER //
CREATE FUNCTION `Employee_age_classification`(`Employees_Last_Name` VARCHAR(50)) RETURNS varchar(50) CHARSET utf8mb4 
    DETERMINISTIC
BEGIN
DECLARE CLASS VARCHAR(50);
DECLARE AGE INT;
DECLARE LASTN VARCHAR(50);
SELECT TIMESTAMPDIFF(YEAR,Bdate,CURDATE())
INTO AGE
FROM EMPLOYEE
WHERE Lname = Employees_Last_Name;
IF AGE>=0 AND AGE<=14 THEN SET CLASS = 'Children';
ELSEIF AGE>=15 AND AGE<=24 THEN SET CLASS = 'Early Working Age';
ELSEIF AGE>=25 AND AGE<=54 THEN SET CLASS = 'Prime Working Age';
ELSEIF AGE>=55 AND AGE<=64 THEN SET CLASS = 'Mature Working Age';
ELSEIF AGE>=65 THEN SET CLASS = 'Elderly';
END IF;
RETURN CLASS;
DELIMITER;

当我尝试运行它时,它显示错误。

Error Code: 1064. You have an error in your SQL syntax. 

我该如何解决这个问题?

I'm doing an assignment for a class where I should determine if the person's age is between one of the following categories:

AGE            CLASSIFICATION
0-14           Children
15-24          Early working age
25-54          Prime working age 
55-64          Mature working age 
65 and above   Elderly 

This is what my script currently looks like:

DELIMITER //
CREATE FUNCTION `Employee_age_classification`(`Employees_Last_Name` VARCHAR(50)) RETURNS varchar(50) CHARSET utf8mb4 
    DETERMINISTIC
BEGIN
DECLARE CLASS VARCHAR(50);
DECLARE AGE INT;
DECLARE LASTN VARCHAR(50);
SELECT TIMESTAMPDIFF(YEAR,Bdate,CURDATE())
INTO AGE
FROM EMPLOYEE
WHERE Lname = Employees_Last_Name;
IF AGE>=0 AND AGE<=14 THEN SET CLASS = 'Children';
ELSEIF AGE>=15 AND AGE<=24 THEN SET CLASS = 'Early Working Age';
ELSEIF AGE>=25 AND AGE<=54 THEN SET CLASS = 'Prime Working Age';
ELSEIF AGE>=55 AND AGE<=64 THEN SET CLASS = 'Mature Working Age';
ELSEIF AGE>=65 THEN SET CLASS = 'Elderly';
END IF;
RETURN CLASS;
DELIMITER;

It shows an error when I try to run it.

Error Code: 1064. You have an error in your SQL syntax. 

How can I fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最丧也最甜 2025-01-18 18:07:59

您在最后一个 DELIMITER 之前缺少 END 语句 -

DELIMITER //
CREATE FUNCTION `Employee_age_classification`(`Employees_Last_Name` VARCHAR(50))
RETURNS varchar(50) CHARSET utf8mb4 
DETERMINISTIC
BEGIN
     DECLARE CLASS VARCHAR(50);
     DECLARE AGE INT;
     DECLARE LASTN VARCHAR(50);
     SELECT TIMESTAMPDIFF(YEAR,Bdate,CURDATE())
       INTO AGE
       FROM EMPLOYEE
      WHERE Lname = Employees_Last_Name;
     IF AGE>=0 AND AGE<=14 THEN 
        SET CLASS = 'Children';
     ELSEIF AGE>=15 AND AGE<=24 THEN 
        SET CLASS = 'Early Working Age';
     ELSEIF AGE>=25 AND AGE<=54 THEN 
        SET CLASS = 'Prime Working Age';
     ELSEIF AGE>=55 AND AGE<=64 THEN 
        SET CLASS = 'Mature Working Age';
     ELSEIF AGE>=65 THEN 
        SET CLASS = 'Elderly';
     END IF;
     RETURN CLASS;
END//
DELIMITER;

You are missing an END statement before the last DELIMITER -

DELIMITER //
CREATE FUNCTION `Employee_age_classification`(`Employees_Last_Name` VARCHAR(50))
RETURNS varchar(50) CHARSET utf8mb4 
DETERMINISTIC
BEGIN
     DECLARE CLASS VARCHAR(50);
     DECLARE AGE INT;
     DECLARE LASTN VARCHAR(50);
     SELECT TIMESTAMPDIFF(YEAR,Bdate,CURDATE())
       INTO AGE
       FROM EMPLOYEE
      WHERE Lname = Employees_Last_Name;
     IF AGE>=0 AND AGE<=14 THEN 
        SET CLASS = 'Children';
     ELSEIF AGE>=15 AND AGE<=24 THEN 
        SET CLASS = 'Early Working Age';
     ELSEIF AGE>=25 AND AGE<=54 THEN 
        SET CLASS = 'Prime Working Age';
     ELSEIF AGE>=55 AND AGE<=64 THEN 
        SET CLASS = 'Mature Working Age';
     ELSEIF AGE>=65 THEN 
        SET CLASS = 'Elderly';
     END IF;
     RETURN CLASS;
END//
DELIMITER;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文