0
我在我的程序有問題......在這種情況下,我想工資raisy員工(Empleado)已經工作5年以上的旅館商店「酒窖「(...對我的英語感到抱歉,我說西班牙語XD)。 首先,我在想選擇所有滿足條件的(在光標),然後比較它們的ID在EMPLEADO表,如果相同(ID用),然後更新工資員工的ID ......這不適用於IF - END IF(我在評論中)但沒有它。 需要幫助...我做錯了什麼,但不知道它是什麼。光標在PL/SQL,我的程序不工作
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;
你需要使用一個proc來做這個任務嗎?對於任務來說,proc實際上太複雜了。 – bitfiddler
確實 - 這是一個單一的UPDATE查詢; SP是嚴重矯枉過正 – Trent
我懷疑你需要修改UPDATE語句,像'UPDATE Empleado SET Empleado.Sueldo = Empleado.Sueldo + Empleado.Sueldo * 0.05 WHERE EMPLEADO.idEMPLEADO = idEmpl'。請不要道歉 - 你的英語比我的西班牙語好很多。 :-)分享和享受。 –