存储过程输出返回null



我被要求编写一个存储过程来计算员工的净工资,如果我们通过employee Id作为参数,给出了公式,我必须为此编写一个Java程序。我首先在我的SQL WORKSBENCH中编写了这个过程,然后在eclipseIDE中编写了Java程序。当我在我的SQL WORKSBENCH中执行此过程时,返回的结果是NULL,而不是员工的工资。在Java程序的输出中,所有员工的工资也打印为0.0。这是员工表的架构。在这个存储过程之后,我在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

您遇到了一个简单的问题,但要注意的问题很小。无论如何,您的输出变量Salary和从表中选择值的名称相同。所以,基本上,你从员工中选择薪水,就像你有一个本地变量薪水一样。尽管情况不同,但它们是相似的。

此外,您在结尾处忘记了一个end if。每个if都需要一个End。

以下是研究的参考资料

最新更新