1

ここに小さなトリッキーな問題があります。私は2つのテーブルを持っています:

employee(id,salary,bonus) 
employee_performance(id,gain,year) .

employee手順を使用したパフォーマンスに応じて、テーブルのボーナスを変更しようとしています。

これは私がこれまでに行ったことです:

create or replace procedure name_of_proc 
AS
BEGIN
   update employee e
      set e.bonus = e.bonus - 900
   where e.salary >= 2000 
     and employee_performance.gain <=2000 
     and employee_performance.year = 2012 
     and e.id=employee_performance.id;
END;

問題は、テーブルをプロシージャに入れる方法がわからないことemployee_performanceです。

4

1 に答える 1

1

試す

create or replace procedure name_of_proc 
AS
BEGIN
   update employee e
      set e.bonus = e.bonus - 900
   where e.salary >= 2000 
     and e.id in 
         (select ep.id from employee_performance ep where ep.gain <=2000 
          and ep.year = 2012
          and ep.id = e.id
         );
END;
于 2012-11-25T12:10:14.437 に答える