sábado, 30 de noviembre de 2013

proc SQL borrado doble

Enunciado: Crea un procedimiento que haga una consulta a autores, 
introduce un ID de un autor y borra todo lo que haya hecho ese autor (libro y autor.)

create or replace 
PROCEDURE DEL_AUTHORS(id_author IN AUTHORS.ID%TYPE) IS
  CURSOR c_inventory(p_isbn BOOKS.ISBN%TYPE) IS 
    SELECT
    FROM INVENTORY 
    WHERE isbn = p_isbn; 
  
  CURSOR c_books(p_author_id AUTHORS.ID%TYPE) IS
    SELECT
    FROM BOOKS 
    WHERE AUTHOR1 = p_author_id OR AUTHOR2 = p_author_id OR AUTHOR3 = p_author_id;
  
BEGIN
  
  FOR I IN c_books(id_author) LOOP
    DBMS_OUTPUT.PUT_LINE(I.ISBN);
    
    FOR J IN c_inventory(I.ISBN) LOOP
      DELETE FROM INVENTORY WHERE isbn = J.ISBN;
    END LOOP;
    
    DELETE FROM BOOKS WHERE ISBN = I.ISBN;
  END LOOP;
  
  DELETE FROM AUTHORS WHERE ID =id_author;
END;

No hay comentarios:

Publicar un comentario