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