Práctica 1 - revisa pedidos.sql

De FdIwiki ABD
Saltar a: navegación, buscar

--Jcopado (discusión) 20:48 14 mar 2016 (CET) (Jesús Copado y Javier Vicente)

 CREATE OR REPLACE PROCEDURE REVISA_PEDIDOS IS
   CURSOR cursor_pedidos IS
     SELECT codigo, importe_total
     FROM pedidos
     FOR UPDATE OF pedidos.importe_total;
   
   importe_debido NUMBER(8,2);
   num_filas_modificadas INT := 0;
   imp_pedido NUMBER(8,2);
   cod_pedido NUMBER(8);
   pre_contiene NUMBER(8,2);
   uni_contiene NUMBER(4);
 BEGIN
   OPEN cursor_pedidos;
   LOOP
     FETCH cursor_pedidos INTO cod_pedido, imp_pedido;
     EXIT WHEN cursor_pedidos%NOTFOUND;
     importe_debido := calcularImporteDebido(cod_pedido);
       IF importe_debido <> imp_pedido THEN
       num_filas_modificadas := num_filas_modificadas + 1;
       UPDATE pedidos
       SET importe_total = importe_debido
       WHERE CURRENT OF cursor_pedidos;
       DBMS_OUTPUT.put_line(' - El importe total del pedido de código ' || cod_pedido || ' ha sido actualizado a ' || importe_debido);
       END IF;
     END LOOP;
   CLOSE cursor_pedidos;
   IF num_filas_modificadas = 0 THEN
     DBMS_OUTPUT.put_line('Ningún cambio en los datos de la tabla Pedidos.');
   ELSE
     DBMS_OUTPUT.put_line('Número de filas modificadas en la tabla Pedidos: ' || num_filas_modificadas);
   END IF;
 END REVISA_PEDIDOS;