create or replace procedure pr_empleados is
cursor cur_empleados is
SELECT RUT_EMPLEADO ,
sum(monto_total),
SUELDO_BASE,
TO_CHAR(FECHA_FACTURA,'MM') "MES_PAGO",
TO_CHAR(FECHA_FACTURA,'YYYY') "AÑO"
FROM EMPLEADO FULL JOIN FACTURA USING (RUT_EMPLEADO)
GROUP BY
RUT_EMPLEADO,TO_CHAR(FECHA_FACTURA,'MM') ,
TO_CHAR(FECHA_FACTURA,'YYYY'),
SUELDO_BASE;
V_BONIFICACION INT:= 0;
V_SUMA NUMBER;
V_COMISION NUMBER ;
REG_EMPLEADOS CUR_EMPLEADOS%ROWTYPE;
BEGIN
FOR REG_EMPLEADOS IN CUR_EMPLEADOS
LOOP
select sum(monto_total) into V_SUMA
from factura;
IF V_SUMA > 100000 and V_SUMA <= 300000 THEN
V_COMISION := ROUND(V_SUMA * 0.1);
ELSIF V_SUMA > 300000 and V_SUMA <= 500000 THEN
V_COMISION := ROUND(V_SUMA * 0.15);
ELSIF V_SUMA > 500000 and V_SUMA <= 700000 THEN
V_COMISION := ROUND(V_SUMA * 0.2);
ELSIF V_SUMA > 700000 AND V_SUMA <= 1500000 THEN
V_COMISION := ROUND(V_SUMA * 0.25);
END IF;
V_BONIFICACION := ROUND((V_COMISION + REG_EMPLEADOS.SUELDO_BASE)*0.085);
INSERT INTO BONIFICACIONES VALUES(REG_EMPLEADOS.RUT_EMPLEADO,
REG_EMPLEADOS."MES_PAGO",
REG_EMPLEADOS."AÑO",
V_COMISION,
V_BONIFICACION);
END LOOP ;
END Pr_Empleados;
exec pr_empleados;
答案 0 :(得分:0)
PL / SQL不会自动提交DML语句 例如INSERT。
您在哪里进行交易?