Para esto, nos ayudará el siguiente bloque anónimo:
SET SERVEROUTPUT ON SIZE 1000000
BEGIN
FOR cur_rec IN (SELECT object_name, object_type
FROM user_objects
WHERE object_type IN ('TABLE', 'VIEW', 'PACKAGE', 'PROCEDURE', 'FUNCTION', 'SEQUENCE')) LOOP
BEGIN
IF cur_rec.object_type = 'TABLE' THEN
EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '" CASCADE CONSTRAINTS';
ELSE
EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '"';
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('FAILED: DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '"');
END;
END LOOP;
END;
Dónde:
- SET SERVEROUTPUT ON SIZE 1000000: Tamaño del buffer en bytes para escribir en el log: DBMS_OUTPUT.put_line.
- object_type IN ('TABLE', 'VIEW', 'PACKAGE', 'PROCEDURE', 'FUNCTION', 'SEQUENCE'): Indicamos los tipos de objetos que vamos a eliminar.
- IF cur_rec.object_type = 'TABLE' THEN: Condición para eliminar Objetos de Tipo: TABLE, ya que difiere de la forma de eliminar los demás objetos en: CASCADE CONSTRAINTS, las cuales son palabras reservadas que borran primero todas las Foreing Keys que referencian a la tabla.
Saludos,
No hay comentarios:
Publicar un comentario