程序不起作用

时间:2017-06-04 16:45:09

标签: sql plsql

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;

1 个答案:

答案 0 :(得分:0)

PL / SQL不会自动提交DML语句 例如INSERT。

您在哪里进行交易?