暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 更新工资行

askTom 2018-07-05
227

问题描述

你好,汤姆,
我写了提到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,它为我完成了工作:

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论