【问题标题】:The stored procedure output is returning null存储过程输出返回 null
【发布时间】:2020-08-03 06:17:23
【问题描述】:

我被要求编写一个存储过程来计算员工的净工资,如果我们通过 员工 ID 作为参数并给出了公式,我必须为此编写一个 Java 程序。 我先在 MY SQL WORKBENCH 中编写此程序,然后在 Eclipse IDE 中编写 Java 程序。 当我在 MY SQL WORKBENCH 中执行此过程时,它返回 NULL 作为结果而不是员工的薪水。 在 Java 程序的输出中,所有员工的员工薪水也打印为 0.0。 This the schema of the employee table. 在这个存储过程之后,我在 QUERY SCRIPT 中运行了以下查询:

调用 Get_Salary(101, @SALARY); 选择@SALARY;

CREATE DEFINER=root@localhost` PROCEDURE Get_Salary(IN ID int, OUT SALARY double )
BEGIN
    declare Sal, e_commission, Gross_Sal, IT double;
    select Salary,Commission into Sal, e_commission from employee where Employee_id = ID;
    set Gross_Sal= Sal + e_commission;
    if e_commission is null then
       set IT= 0.1 * Gross_Sal;
    else if e_commission < 500 then
       set IT= 0.15 * Gross_Sal;
    else
       set IT= 0.2 * Gross_Sal;
    end if;
    set SALARY = Gross_Sal - IT;

END

【问题讨论】:

  • 如果您提供表模式会更有帮助。
  • 是的,所以我在我的问题中附加了表格架构。

标签: mysql database stored-procedures mysql-workbench java-stored-procedures


【解决方案1】:

您遇到了一个简单的问题,但观察起来却非常小。无论如何,您的输出变量 Salary 与从表中选择值具有相同的名称。所以,基本上你是从员工中选择薪水,并且你有一个局部变量薪水。尽管情况不同,但它们是相似的。

另外,你忘记了最后一个end if。每个 if 都需要一个 End。

Here is the reference for study

【讨论】:

  • 当我添加另一端时,如果它显示错误。
  • 您是否完全从工作台粘贴了上述代码,或者您错过了一些行?如果就在现有的结束之后,我正在结束。此外,您不必使用:DEFINER=root@localhost`(可选)并且在 localhost 末尾的反勾也会产生错误。
猜你喜欢
  • 2014-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 2014-04-18
相关资源
最近更新 更多