Diferencia entre revisiones de «Práctica 1 - revisa pedidos.sql»
De FdIwiki ABD
(Página creada con «--~~~~ (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...») |
|||
(3 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
--[[Usuario:Jcopado|Jcopado]] ([[Usuario discusión:Jcopado|discusión]]) 20:48 14 mar 2016 (CET) (Jesús Copado y Javier Vicente) | --[[Usuario:Jcopado|Jcopado]] ([[Usuario discusión:Jcopado|discusión]]) 20:48 14 mar 2016 (CET) (Jesús Copado y Javier Vicente) | ||
− | CREATE OR REPLACE PROCEDURE REVISA_PEDIDOS IS | + | 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 | + | 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; | + | END REVISA_PEDIDOS; |
Última revisión de 21:54 14 mar 2016
--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;