/* @borrarDirBD_directorio */ -- hacer que los mensajes del SGBD se muestren por pantalla SET SERVEROUTPUT ON; /* este procedimiento elimina de la BD de directorios el directorio especificado como parámetro. Para ello, previamente y de forma recursiva, elimina todos los documentos y subdirectorios incluidos en el directorio. */ CREATE OR REPLACE PROCEDURE borrar_Directorio (elDir IN Directorio.idDir%TYPE) AS CURSOR dirHijos IS SELECT idDir FROM Directorio WHERE dirPadre = elDir; BEGIN DBMS_OUTPUT.PUT_LINE (chr(10)||'ELIMINAR directorio '||elDir); -- Primero se eliminan todos los subdirectorios FOR dirSel IN dirHijos LOOP DBMS_OUTPUT.PUT_LINE ('eliminar subdir. '||dirSel.idDir||' de directorio '||elDir); borrar_Directorio (dirSel.idDir); END LOOP; -- Después se eliminan los documentos que contiene DBMS_OUTPUT.PUT_LINE ('eliminar documentos de directorio '||elDir); DELETE FROM Documento WHERE dirPadre = elDir; -- Finalmente, se elimina la carpeta DBMS_OUTPUT.PUT_LINE ('eliminar la entrada del directorio '||elDir); DELETE FROM Directorio WHERE idDir = elDir; DBMS_OUTPUT.PUT_LINE ('ok. Directorio '||elDir||' eliminado'||chr(10)); END; /