Hola buenos días,
Estoy haciendo un ejercicio de PL/SQL para actualizar un campo de una tabla según el valor de otro campo pasado por parámetro. Este seria el código:
Código:
create or replace procedure ver_bono(p_cod_cliente CHAR)AS
v_ImporteTotal NUMBER(4,2);
v_valorBono NUMBER(4,0);
BEGIN
SELECT SUM(http://dp.total_linea) INTO v_ImporteTotal FROM detalle_pedido DP JOIN pedido P ON p.num_ped=http://dp.num_pedido WHERE P.cliente=p_cod_cliente;
SELECT BONO_CANJEABLE INTO v_valorBono FROM cliente WHERE cod_cli = p_cod_cliente;
http://DBMS_OUTPUT.PUT_LINE('Valor del bono antes de actualizar es: ' || v_valorbono);
if (v_ImporteTotal>=50) then
UPDATE cliente SET BONO_CANJEABLE=v_valorBono+15 where http://cliente.cod_cli='p_cod_cliente';
http://DBMS_OUTPUT.PUT_LINE('genera bono de canje +15');
elsif v_ImporteTotal>30 AND v_ImporteTotal<50 then
UPDATE cliente SET BONO_CANJEABLE=v_valorBono+10 where http://cliente.cod_cli='p_cod_cliente';
http://DBMS_OUTPUT.PUT_LINE('genera bono de canje +10');
elsif v_ImporteTotal>10 AND v_ImporteTotal<=30 then
UPDATE cliente SET BONO_CANJEABLE=v_valorBono+5 where http://cliente.cod_cli='p_cod_cliente';
http://DBMS_OUTPUT.PUT_LINE('genera bono de canje +5');
else
http://DBMS_OUTPUT.PUT_LINE('no genera bono de canje');
END IF;
http://DBMS_OUTPUT.PUT_LINE('El importe total de los pedidos del cliente es de: ' || v_importetotal);
END ver_bono;
Según el nº de cliente que pasamos por parámetro, se mira cuento es el total de su pedidos y en base al importe se incrementa su "bono" en 15,10 o 5€
El problema es que no me actualiza el valor bono_canjeable con el nuevo valor. He estado mirando por internet y en los apuntes, pero no veo el fallo.
Alguna ayuda ?
Gracias