创建从表中过滤数据的过程时出现错误

问题描述 投票:0回答:1

创建一个 MySQL 过程来声明一个游标来选择姓氏、名字 EMPLOYEE 表中的姓名、工资和雇用日期。检索每一行 如果员工的信息是从光标处开始,则打印该员工的信息 工资超过 50,000 美元且雇用日期在 1997 年 12 月 31 日之前 (显式游标问题)。 这是我正在为其创建程序的问题陈述,但是我在

loop:
附近收到一条错误消息。我无法理解错误的确切原因。这是代码:

DELIMITER //

CREATE PROCEDURE GetHighEarnersBefore1998(IN salary_threshold DECIMAL(10,2))

BEGIN
  DECLARE done INT DEFAULT FALSE;
  DECLARE emp_last_name VARCHAR(50);
  DECLARE emp_first_name VARCHAR(50);
  DECLARE emp_salary DECIMAL(10,2);
  DECLARE emp_hire_date DATE;

  DECLARE emp_cursor CURSOR FOR SELECT last_name, first_name, salary, hire_date FROM EMPLOYEE;

  OPEN emp_cursor;

loop:
  FETCH emp_cursor INTO emp_last_name, emp_first_name, emp_salary, emp_hire_date;
  SET done = CURSOR_ROWCOUNT = 0;

  IF emp_salary > salary_threshold AND emp_hire_date < '1997-12-31' THEN
    SET done = TRUE;
    SELECT CONCAT(emp_last_name, ', ', emp_first_name), emp_salary, emp_hire_date;
  END IF;

  LEAVE loop WHEN done;
END LOOP;

  CLOSE emp_cursor;
END //

DELIMITER ;
mysql procedure
1个回答
0
投票

需要手续吗? 简单查询无法解决?

SELECT 
  last_name, 
  first_name, 
  salary, 
  hire_date 
FROM EMPLOYEE
WHERE
      salary > @salary_threshold
  AND hire_date < DATE(@limit_date)
© www.soinside.com 2019 - 2024. All rights reserved.