store过程没有给出正确的值

3yhwsihp  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(345)

我正在尝试使用存储过程查找具有特定薪资范围的员工人数,我得到的结果与简单查询(下面的第二个查询)的结果不相等,这意味着存储过程工作不正常?
我希望有人能帮我。
--答:空/没有工资金额低于38000,但是按照商店程序我得到967330
第二,在store过程中有没有其他方法来缩短case语句?在当前版本中,每次都必须添加子查询。
数据库名称:employees列名:salary employee\u id=emp\u no

  1. DELIMITER $$
  2. CREATE PROCEDURE SALARY_RANGE
  3. (INOUT no_employees INT, IN salary INT)
  4. BEGIN
  5. CASE
  6. WHEN (salary <= 38000) THEN (SELECT COUNT(emp_no) INTO no_employees
  7. FROM salaries
  8. WHERE salary <= 38000);
  9. WHEN (salary<= 68000) THEN (SELECT COUNT(emp_no) INTO no_employees
  10. FROM salaries
  11. WHERE salary <= 68000);
  12. WHEN (salary <= 88000) THEN (SELECT COUNT(emp_no) INTO no_employees
  13. FROM salaries
  14. WHERE salary <= 88000);
  15. WHEN (salary <= 100000) THEN (SELECT COUNT(emp_no) INTO no_employees
  16. FROM salaries
  17. WHERE salary <= 100000);
  18. ELSE (SELECT COUNT(emp_no) INTO no_employees
  19. FROM salaries WHERE salary > 100000);
  20. END CASE;
  21. END$$
  22. CALL SALARY_RANGE(@finding_salary_range_count,'38000')$$
  23. select @finding_salary_range_count;
  24. -- to check the if the answer matched the above store procedure
  25. select count(case when salary <= 88000 then emp_no else null end) as count_sal
  26. from salaries;
ovfsdjhp

ovfsdjhp1#

我希望这样的代码:

  1. CREATE PROCEDURE SALARY_RANGE (
  2. OUT out_num_employees INT,
  3. IN in_salary INT
  4. )
  5. BEGIN
  6. SELECT COUNT(emp_no) INTO out_num_employees
  7. FROM salaries
  8. WHERE salary <= in_salary or in_salary IS NULL
  9. END;

我不认为需要多个 SELECT 声明。

相关问题