Práctica 1 - revisa pedidos.sql
De FdIwiki ABD
--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;