【发布时间】:2015-12-05 11:29:50
【问题描述】:
我有这个 MySQL 过程,我使用游标来:
CREATE DEFINER=`root`@`localhost` PROCEDURE `tax_to_salary`()
BEGIN
DECLARE basic_salary INTEGER;
DECLARE new_salary INTEGER;
DECLARE done INTEGER;
declare count INTEGER;
DECLARE counter INTEGER default 0;
DECLARE cur1 CURSOR FOR SELECT salary FROM employee;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
SELECT count(id) INTO count FROM employee;
SET @counter:=0;
OPEN cur1;
l1:LOOP
FETCH cur1 INTO basic_salary;
SET @counter:=@counter+1;
IF @counter>count THEN
leave l1;
end if;
IF basic_salary>2500 THEN
SET @new_salary := 500;
SET @basic_salary := @basic_salary - @new_salary;
else
SET @new_salary := 200;
SET @basic_salary := @basic_salary - @new_salary;
END IF;
SELECT emp_name, salary, basic_salary AS 'Salary after taxes' FROM employee;
END LOOP;
END
我得到了这个结果:
但是我的程序应该从所有超过 2500 的工资中删除 500,并从低于 2500 的工资中删除 200。 我试图将最终的 SELECT 查询放在循环中,但我得到了 5 个选项卡,每个选项卡都包含相同的下图。
【问题讨论】:
标签: mysql sql stored-procedures cursor