为啥在我的程序中没有打印更新的正确值?
Posted
技术标签:
【中文标题】为啥在我的程序中没有打印更新的正确值?【英文标题】:Why in my Procedure is not printing the correct value updated?为什么在我的程序中没有打印更新的正确值? 【发布时间】:2020-04-21 02:14:27 【问题描述】:这是我的测试代码:
PROCEDURE INCREASE(p_employee in number)
is
V_salary employees.salary%type;
BEGIN
Select salary into v_salary
From employees where employee_id = p_employee;
if v_salary >= 15000 then
Update employees set salary = v_salary + ((v_salary * 20)/100) Where employee_id = p_employee;
else
Update employees set salary = v_salary + ((v_salary * 10)/100) Where employee_id = p_employee;
end if;
commit;
DBMS_OUTPUT.PUT_LINE('Name: ' || v_name || ' ' || 'salary: ' || v_salary );
End;
当我运行程序并打印以查看输出时,我们会看到更新前的结果: enter image description here
当我选择表Employees时看到该用户的薪水已经更新:
enter image description here
【问题讨论】:
请编辑您的问题,并包含您在 EMPLOYEES 表中获得的数据,以及显示您如何调用此过程的测试工具以及您的结果'得到。基于this db<>fiddle,我不得不说您的程序运行良好。 【参考方案1】:因为您没有打印更新的值,所以您正在打印选定的值。您的更新更改了数据库中薪水的值,它不会更改选择的变量。您需要更新语句的return 子句。此外,您无需选择;这可以在单个语句中完成,除了设置变量和实际打印。
create or replace procedure increase(p_employee in number)
is
v_salary employees.salary%type;
begin
update employees
set salary = case when salary >= 15000
then 1.2 * salary
else 1.1 * salary
end
where employee_id = p_employee
return salary into v_salary;
commit;
dbms_output.put_line('mesalao: ' || v_salary );
end;
【讨论】:
以上是关于为啥在我的程序中没有打印更新的正确值?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的数据没有在我的 SQLAlchemy 模型中正确表示?