Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/05/2019, 05:28
durdi
 
Fecha de Ingreso: enero-2014
Ubicación: Málaga
Mensajes: 13
Antigüedad: 10 años, 10 meses
Puntos: 0
Actualizar variable mediante SET en cursor implicito

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

Última edición por durdi; 08/05/2019 a las 23:33