Pular para o conteúdo
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #106665
    Avatar de Glauber CavalcantiGlauber Cavalcanti
    Participante

      Boa tarde galera,
      Preciso extrair dados para um arquivo de texto, querendo ser performático
      tentei utilizar o FORALL pois são muitos dados,
      Para cada vez que acessar o aquivo gravar de 500 em 500 registros..

      BEGIN
      file_handle := UTL_FILE.OPEN('/PASTA/DESTINO','CLIENTE_EXTERNO.TXT','w', 1000);

      OPEN CURSOR
      LOOP
      FETCH CURSOR BULK COLLECT INTO v_ID, V_NOME_CLIENTE LIMIT 500;
      EXIT WHEN v_ID.COUNT = 0;

      FORALL i IN 1 .. v_ID.COUNT
      EXECUTE IMMEDIATE 'BEGIN UTL_FILE.PUT_LINE(:1, :2); END;'
      USING file_handle, V_NOME_CLIENTE(i);

      END LOOP;
      ...
      ...
      ...

      Lembrando que o FORALL só funciona em DML (insert, update, delete), sendo assim tentei utilizar
      o EXECUTE IMMEDIATE.

      E o erro que me dá é esse:

      PLS-00457: expressions have to be of SQL types

      Alguém têm alguma ideia melhor ?
      Valew
      Abraços

      #106666
      Avatar de rmanrman
      Participante

        @Glauber Cavalcanti

        Dependendo da situação, se for apenas uma leitura do arquivo texto para inserir em uma tabela, recomendo o Sql Loader.

        Caso você tiver regra de negócio outra opção é utilizar EXTERNAL TABLE.

        Em relação a desempenho não posso dizer qual é o melhor, só fazendo testes mesmo.

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