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;