Ayudame con un buscar una solución por favor

Mi intención no es quitarte tu tiempo, pero la verdad es que después de mucho intentar no he podido dar con la solución, debe ser porque soy nuevo en esto. Ayudame por favor
Lo que necesito es aplicar un valor a un campo llamado descuento a los clientes que han ingresado más de 5 veces su auto a una tabla llamada revisión, para luego reiniciar el contador y así después de 5 ingresos más insertar un nuevo descuento. Pero mi problema se presenta por que inserta los descuentos en todos los valares mayores a 5, es decir, no reinicia el contador.
Lo correcto debería ser así
5- Insertar valor
6-
7-
8-
9-
10- insertar valor . Así sucesivamente cada 5 ingresos // múltiplos de 5
Estoy utilizando pl sql
declare cursor agg_desc (c_cli in number)
is
select count (cod_cli)
  from revision
    where cod_cli = c_cli;
cant number;
c_cli  number;
x_desc number;
secuencia number;
max number;
BEGIN
c_cli := &c_cli;       
     open agg_desc(c_cli);
            loop
                  fetch agg_desc
                  into cant;
                  exit when agg_desc%notfound;
                  dbms_output.put_line('El cliente ha sido ingresado '||cant|| ' veces');
            end loop;
     close agg_desc;
if cant > 5 then
  x_desc := 5;  
  dbms_output.put_line ('el cliente ' || c_cli||  ' presenta descuento');
ELSE
          x_desc := 0;
                  dbms_output.put_line ('el cliente ' ||c_cli|| ' no presenta descuento');
 END IF;
// procedimiento almacenado para insertar                   
  AGG_ING_CLI_REV( num_rev , cod_cli, matricula, mecanico, estado ,valor ,X_DESC, TO_DATE('10-10-10','DD-MM-YY'));     
    commit;
end;
De ante mano gracias

1 Respuesta

Respuesta
1
Estoy de vacaciones, y no tengo acceso a una BBDD de ORACLE para probar, pero cambia la
sentencia "if cant > 5 then" por "if mod(cant, 5) = 0 and cant > 0 then"
La funcion mod (m, n) devuelve el resto de la división entre m y n. En tu caso, quieres dividir la cantidad de revisiones entre 5. Si el resto de la divisón entre la cantidad y 5 es 0 significa que la cantidad será 5, 10, 15, 20... y 0, por eso aplico la condicion extra de que la cantidad es > 0.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas