问题描述
你好,汤姆,
我写了提到plsql更新工资程序。它编译也成功。但它没有改变我的任何工资行。实际上,我是编程的新手。我想知道是如何工作的。
我如何确认它正在工作以及如何查看结果。
谢谢
拜泽德·罗尼
在我的程序下面。
------------------------
我写了提到plsql更新工资程序。它编译也成功。但它没有改变我的任何工资行。实际上,我是编程的新手。我想知道是如何工作的。
我如何确认它正在工作以及如何查看结果。
谢谢
拜泽德·罗尼
在我的程序下面。
------------------------
create or replace procedure UpdateAllSalary IS CURSOR C_EMPSALARY_CURSOR IS SELECT * FROM HR_MONTHLYSALARY FOR UPDATE OF BASIC; R_EMP C_EMPSALARY_CURSOR%ROWTYPE; BEGIN OPEN C_EMPSALARY_CURSOR; LOOP FETCH C_EMPSALARY_CURSOR INTO R_EMP; EXIT WHEN C_EMPSALARY_CURSOR%NOTFOUND; update hr_monthlysalary set basic=BASIC+111 where CURRENT OF C_EMPSALARY_CURSOR; END LOOP; EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20000, 'ERROR'); CLOSE C_EMPSALARY_CURSOR; END;
专家解答
也许你看不到变化,因为你的经理没有批准你的加薪?;)
无论如何,你的代码看起来像它增加了每行的工资111给我。查询前后的数据进行验证。
在经典员工表中进行Subbing,它为我完成了工作:
如果你在一个过程中这样做,你需要执行它来进行更新:
但这是很多不必要的代码!
更新会更改与where子句匹配的所有行的值。所以你只需要一个更新:
无论如何,你的代码看起来像它增加了每行的工资111给我。查询前后的数据进行验证。
在经典员工表中进行Subbing,它为我完成了工作:
select employee_id, salary from hr.employees
where department_id = 20;
EMPLOYEE_ID SALARY
201 13000
202 6000
declare
cursor c_empsalary_cursor is
select *
from hr.employees
where department_id = 20
for update of salary;
r_emp c_empsalary_cursor%rowtype;
begin
open c_empsalary_cursor;
loop
fetch c_empsalary_cursor into r_emp;
exit when c_empsalary_cursor%notfound;
update hr.employees
set salary = salary + 111
where current of c_empsalary_cursor;
end loop;
exception
when others then
raise_application_error(-20000,'ERROR' );
close c_empsalary_cursor;
end;
/
select employee_id,
salary
from hr.employees
where department_id = 20;
EMPLOYEE_ID SALARY
201 13111
202 6111如果你在一个过程中这样做,你需要执行它来进行更新:
exec UpdateAllSalary;
但这是很多不必要的代码!
更新会更改与where子句匹配的所有行的值。所以你只需要一个更新:
rollback;
select employee_id,
salary
from hr.employees
where department_id = 20;
EMPLOYEE_ID SALARY
201 13000
202 6000
update hr.employees
set salary = salary + 111;
select employee_id,
salary
from hr.employees
where department_id = 20;
EMPLOYEE_ID SALARY
201 13111
202 6111 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




