Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #94695
    eversonpiza
    Participante

      Galera,

      Preciso montar um procedure que recebe o nome da tabela como parâmetro, alguém sabe me dizer se isso é possível?

      Segue um exemplo do que eu quero fazer:
      declare
      procedure teste(iTabela in varchar2) is
      vAux number;
      begin
      select count(*) into vAux from iTabela;
      end ;
      begin
      teste('DUAL');
      end;

      Obrigado,
      Everson

      #94701
      Ishii
      Participante

        Olá,

        Sim é possível mas você terá que usar o DBMS_SQL.

        []s Ishii 🙂

        #94716
        burga
        Participante

          Ou utilizar Native Dynamic SQL (NDS) que é outra opção pro DBMS_SQL.
          com EXECUTE IMMEDIATE…

          Estuda o pacote que o Ishii passou e o NDS e você vai conseguir fazer o que quer…

          #94781
          eversonpiza
          Participante

            Pessoal,

            Estou montando esse select dinamico para remover registros de várias tabelas, seguindo uma determina regra, em alguns casos serão removidos milhões de registros.

            Para não estourar o segmento de undo eu tinha adotado a solução do DBMS_SQL, onde eu pegava o rowid e deleteva um a um, com commit a cada 500, mas estava demorando um pouco, então eu alterei para usar o “execute immediate”, fazendo um loop com delete “where rownum < 20000" e commit a cada delete, e sai do loop quando não deletar nada. A principio funciona bem, mas depois de algum tempo esta estourando a quantidade de cursores abertos (ORA-01000: maximum open cursors exceeded), já aumentei a qquantidade de cursores p/ 500, oq considero um valor alto, mas continua estourando, acho que se ficar aumentando não é a solução, alguém sabe como faço para 'fechar' estes cursores?

            Obrigado,
            Everson

            #94803
            fsitja
            Participante

              Faz sem cursor… Roda o mesmo DELETE em loop e sai do loop quando o SQL%ROWCOUNT der igual a 0.

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