0

手順に問題があります...この場合、店「ボデガ」で5年以上働いている従業員(Empleado)の給料を上げたいです(...私の英語でごめんなさい、私はスペイン語を話しますXD)。まず、条件を満たすすべての従業員の ID を (カーソルで) 選択し、それらを EMPLEADO テーブルの ID と比較することを考えていました。 IF - END IF (私はコメントに入れました) では動作しませんが、それなしでは動作しません。助けが必要です...私は何か間違ったことをしていますが、それが何であるかわかりません。

CREATE OR REPLACE PROCEDURE aumento_empleado(idBodega IN CHAR)IS

CURSOR c_empl IS SELECT E.idEmpleado 
             FROM Empleado E, Bodega B
             WHERE( MONTHS_BETWEEN(sysdate,E.fecha_contrato)>=5*12 
                    AND E.id_Bodega=B.id_Bodega 
                    AND B.id_Bodega=idBodega); 

idEmpl Char(8);
NO_EMP EXCEPTION;

 BEGIN

 OPEN c_empl;   

LOOP    
FETCH c_empl INTO idEmpl;
EXIT WHEN c_empl%notfound;

  IF c_empl%ROWCOUNT=0 THEN
      RAISE NO_EMP;
  END IF;   

--IF (idEmpl=Empleado.idEmpleado) THEN  
  UPDATE Empleado
  SET Empleado.Sueldo=Empleado.Sueldo + Empleado.Sueldo*0.05;   
--END IF;


END LOOP;   

CLOSE c_empl;

EXCEPTION
   WHEN NO_EMP THEN
         dbms_output.put_line('No hay empleados que cumplan con las condiciones pedidas para la bonificacion' ) ;

   WHEN OTHERS THEN 
     dbms_output.put_line('Error: hubo un error durante la ejecucion del procedimiento' ) ;


END aumento_empleado;
4

1 に答える 1