Вывод хранимой процедуры возвращает ноль - PullRequest
0 голосов
/ 20 апреля 2020

Меня попросили написать хранимую процедуру для расчета зарплаты net сотрудника, если мы передадим идентификатор сотрудника в качестве параметра, и были даны формулы, и мне пришлось написать программу Java для этого же. Я пишу эту процедуру сначала в MY SQL WORKBENCH, а затем написал программу Java в Eclipse IDE. Когда я выполняю эту процедуру в MY SQL WORKBENCH, она возвращает NULL как результат, а не зарплату сотрудника. В выводе программы Java Заработная плата сотрудника печатается как 0,0 для всех сотрудников. Это схема таблицы сотрудников. После этой хранимой процедуры я выполнил следующие запросы в QUERY SCRIPT:

call Get_Salary (101, @SALARY); SELECT @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

1 Ответ

0 голосов
/ 22 апреля 2020

У вас была простая проблема, но очень незначительная для наблюдения. В любом случае, ваша выходная переменная Salary имеет то же имя, что и выбор значения из таблицы. Таким образом, в основном вы выбираете зарплату от сотрудника, а также у вас есть локальная переменная зарплата. Несмотря на разные случаи, они похожи.

Кроме того, вы забыли end if в конце. Каждому если нужен Конец.

Вот ссылка для изучения

...