Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #105343
    Avatar de EvlokiEvloki
    Participante

      Ola preciso fazer um script que gere o comando para dropar os objetos de um determinado usuario, mas não está dano muito certo.
      Tentei com uns arrays mas tb não rolou, alguém sabe um jeito simples de fazer isso?
      Lembrando que vai retornar mais de uma linha.

      Esse rownum foi só para teste.

      set echo off
      set feed off
      set pagesize 4000
      set linesize 150;
      set verify off;
      set serveroutput on;

      undef usuario

      ACCEPT usuario char PROMPT 'Usuario:'

      DECLARE
      ccount number;
      query varchar2(200);
      y number;

      BEGIN
      y:=1;
      ccount:=0;
      SELECT count(object_type) into ccount from dba_objects where object_type<>'SYNONYM' and UPPER(owner) = UPPER('&usuario');
      IF ccount > 0 THEN
      FOR z in y .. ccount
      LOOP
      query:= '';
      SELECT 'DROP '||object_type||' '||owner||'.'||object_name|| ' ' into query from dba_objects where object_type<>'SYNONYM' and UPPER(owner) = UPPER('&usuario') and rownum = z;
      DBMS_OUTPUT.put_line (query);

      END LOOP;

      END IF;
      --CLOSE cursorcount;

      END ;

      #105344
      Avatar de rmanrman
      Participante

        @Evloki

        Só gostaria de entender melhor qual é contexto deste problema… qual o objetivo a ser alcançado? Aparentemente o script esta ok… Qual o erro apresentado?

        #105345
        Avatar de EvlokiEvloki
        Participante

          Consegui resolver, eu estava vacilando na hora de colocar o SQL no cursor.
          Queria listar varias linhas de comando, mas do jeito que fiz só listava a primeira.

          Fiz assim

          set echo off
          set feed off
          set pagesize 4000
          set linesize 150;
          set verify off;
          set serveroutput on;

          undef usuario

          ACCEPT usuario char PROMPT 'Usuario:'

          DECLARE
          ccount number;
          usuario VARCHAR2 (30);
          CURSOR cursorcount IS
          SELECT object_type, owner,object_name from dba_objects where object_type'SYNONYM' and UPPER(owner) = UPPER('&usuario');

          teste  cursorcount%ROWTYPE;
          

          BEGIN
          SELECT count(object_type) into ccount from dba_objects where object_type'SYNONYM' and UPPER(owner) = UPPER('&usuario');
          OPEN cursorcount;
          LOOP
          FETCH cursorcount INTO teste;
          exit when cursorcount%notfound;
          DBMS_OUTPUT.put_line ('DROP ' ||teste.object_type || ' '|| teste.owner||'.'||teste.object_name|| ';');

          END LOOP;       
          

          /*
          ELSE
          DBMS_OUTPUT.put_line ('DROP USER ' ||UPPER('&usuario')|| ';');*/

          close cursorcount;
          

          END;

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress