Páginas

sexta-feira, 26 de julho de 2013

[PL/SQL] - Bloco PL/SQL para dropar objetos do schema

Bom pessoal, vou compartilhar no meu blog informações referentes ao meu atual trabalho como Analista e Programador PL/SQL para facilitar a pesquisa sobre alguns assuntos relacionados a Oracle e Programação PL/SQL. 

 Bloco PL/SQL para dropar objetos do schema

set serveroutput on size 99999999;
declare
vCursor number;
vComando varchar2(2000);
vError number;
vUser varchar2(200);
begin
select user into vUser from dual;
if (vUser = 'APPS' or vUser = 'SYSTEM' or vUSer = 'SYS') then
dbms_output.put_line('SCHEMA NÃO PERMITIDO');
else
dbms_output.put_line('DROPANDO OBJETOS');
vCursor := dbms_sql.open_cursor;
for rObjetos in (select *
from user_objects
where object_type in
('TABLE','FUNCTION','PROCEDURE','SYNONYM','VIEW','PACKAGE','SEQUENCE')
) loop
vComando := 'Drop '||rObjetos.object_type|| ' ' || rObjetos.object_name;
if rObjetos.object_type = 'TABLE' then
vComando := vComando || ' cascade constraint';
end if;
dbms_sql.parse(vCursor, vComando, dbms_sql.native);
vError := dbms_sql.execute(vCursor);
end loop;
dbms_sql.close_cursor(vCursor);
end if;
end;
/

--------------------------------------------------------------------------------------------------

Atualização do Script abaixo:

BEGIN
   DECLARE
      vComando VARCHAR2(2000);
      vUser    VARCHAR2(200);
   BEGIN
      SELECT USER INTO vUser FROM dual;
      IF (vUser = 'APPS' OR vUser = 'SYSTEM' OR vUSer = 'SYS')
      THEN
         dbms_output.put_line('SCHEMA NÃO PERMITIDO');
      ELSE
         dbms_output.put_line('DROPANDO OBJETOS');
         FOR rObjetos IN (SELECT *
                          FROM   user_objects
                          WHERE  object_type IN ('TABLE',
                                                 'FUNCTION',
                                                 'PROCEDURE',
                                                 'SYNONYM',
                                                 'VIEW',
                                                 'PACKAGE',
                                                 'SEQUENCE'))
         LOOP
            BEGIN
               vComando := 'Drop ' || rObjetos.object_type || ' ' ||
                           rObjetos.object_name;
               IF rObjetos.object_type = 'TABLE'
               THEN
                  vComando := vComando || ' cascade constraint';
               END IF;
               EXECUTE IMMEDIATE vComando;
            EXCEPTION
               WHEN OTHERS THEN
                  DBMS_OUTPUT.put_line('ERRO : ' || SQLCODE || ' - ' ||
                                       SQLERRM);
            END;
         END LOOP;
      END IF;
   END;
END;

Fonte:
http://dicasoracledba.blogspot.com.br/2009/04/bloco-plsql-para-dropar-objetos-do.html

Nenhum comentário:

Postar um comentário