Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Actualizar variable mediante SET en cursor implicito

Estas en el tema de Actualizar variable mediante SET en cursor implicito en el foro de Oracle en Foros del Web. 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. ...
  #1 (permalink)  
Antiguo 08/05/2019, 05:28
 
Fecha de Ingreso: enero-2014
Ubicación: Málaga
Mensajes: 13
Antigüedad: 5 años, 4 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



La zona horaria es GMT -6. Ahora son las 01:50.