Oracle 每当在没有触发的情况下更改薪资时,在emp_sal_历史记录表中插入/更新旧薪资值的包

Oracle 每当在没有触发的情况下更改薪资时,在emp_sal_历史记录表中插入/更新旧薪资值的包,oracle,function,package,procedure,Oracle,Function,Package,Procedure,这是我的职责 create or replace function sal_incr ( p_grade number) return number is v_inc number; begin select raise_percent into v_inc from sal_inc where grade_id = p_grade; return 1 + (v_inc/100); end; 这是我的程序: create or replace procedure sal_increm i

这是我的职责

create or replace
function sal_incr
(
p_grade number)
return number
is
v_inc number;
begin
select raise_percent into v_inc from sal_inc where grade_id = p_grade;
return  1 + (v_inc/100);
end;
这是我的程序:

create or replace 
procedure sal_increm 
is
begin
UPDATE emp_task SET sal = sal * sal_incr(grade_id);
end;

怎样做那个包裹。。在不使用触发器的情况下,如何在单独的表中更新“old sal”、“modified by”和“modified on”

一个过程中可以有多个DML语句;如果你不能的话,它们就没那么有用了。您可以根据任务表中的数据在历史记录表中执行一次插入,使用和添加执行用户,使用添加当前时间

如果你想记录新的工资,你也可以在插入中计算

这将记录一个历史记录,即使是对于等级没有得到增加的员工。如果您有这些,或者希望处理这种可能性并排除它们,您可以添加

where sal_incr(grade_id) != 1

您也可以将其添加到更新中。

这项工作是否更新了emp\u任务集sal=sal*sal\u incr(grade\u id)、modified\u by=USER、modified\u on=sysdate,其中emp=emp\u id:??
where sal_incr(grade_id) != 1