Colocar início e fim em arquivo

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
flebrao
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 116
Registrado em: Seg, 10 Abr 2006 4:46 pm
Localização: Santa Bárbara D'Oeste

Bom dia a todos.... estou precisando colocar em minha rotina que gera um arquivo texto uma linha que indica o inicio do arquivo e outra o fim ex:

inicio
teste teste teste teste teste teste
teste teste teste teste teste teste
teste teste teste teste teste teste
teste teste teste teste teste teste
fim

Tenho o seguinte código, porém tentei de várias formas e não deu muito certo :cry:
Alguém saberia me dizer como posso alterá-lo :?:

Selecionar tudo

   IF    (P_EXECUCAO = 'TODOS')
      OR (P_EXECUCAO = 'EXC. FISCAL') THEN
      BEGIN
         R_XXDS_015_K.INITIALIZE(ERRBUF ,RETCODE);
         R_XXDS_015_K.LOG('Gerando arquivo "R_EXC_FISCAL.txt"...');
         V_TOTAL := 0;
         IN_FILE3 := UTL_FILE.FOPEN(V_DIRETORIO ,'R_EXC_FISCAL.txt' ,'w');

         OPEN C3;

         LOOP
            FETCH C3
             INTO R3;
            
            EXIT WHEN C3%NOTFOUND;
            TEXTO3 :=    R3.EST_EMITENTE
                      || '@1#'
                      || R3.EST_CLIENTE
                      || '@2#'
                      || R3.INFORMACAO
                      || '@F#'
                      || CHR(13);
            UTL_FILE.PUT_LINE(IN_FILE3 ,TEXTO3);
            V_TOTAL := V_TOTAL + 1;
         END LOOP;
      EXCEPTION
         WHEN OTHERS THEN
            R_XXDS_015_K.ABORT(RETCODE);

            IF C3%ISOPEN THEN
               CLOSE C3;
            END IF;

            UTL_FILE.FCLOSE(IN_FILE3);
            RAISE;
      END;

      IF C3%ISOPEN THEN
         CLOSE C3;
      END IF;

      UTL_FILE.FCLOSE(IN_FILE3);
      R_XXDS_015_K.LOG( 'Arquivo gerado com ' || V_TOTAL || ' registro(s).');
      R_XXDS_015_K.FINISH;
   END IF;
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP

Flebrao,

é mais ou menos isso que deseja?

Tabela tb_teste
Campos: Cd_usu e NM_usu

Selecionar tudo


DECLARE 

 v_contador NUMBER(10) :=0;

 CURSOR cur_valores 
   IS 
     SELECT *
       FROM tb_teste;
       
BEGIN 
  FOR x IN cur_valores
  LOOP
     v_contador := v_contador + 1;
     -- Escrevo cabeçalho
     IF v_contador = 1
     THEN  
        dbms_output.put_line('---------------------------------------');
        dbms_output.put_line('Cabeçalho do relatório de funcionários ');
        dbms_output.put_line('---------------------------------------');        
     END IF;
     dbms_output.put_line(' Nome: ' || x.nm_usu);
  END LOOP;  
  -- Escrevo Rodapé
  dbms_output.put_line('---------------------------------------');
  dbms_output.put_line('Rodapé do relatório de funcionários ');  
  dbms_output.put_line('---------------------------------------');
END;
Talvez dê pra implementar na tua rotina.

Qualquer dúvida, posta ai.

Abraços,

Paulo Trevisolli
flebrao
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 116
Registrado em: Seg, 10 Abr 2006 4:46 pm
Localização: Santa Bárbara D'Oeste

Bom dia,
Trevisolli consegui implementar seguindo essa sua idéia... foi muito baba heheheheh


Muito obrigado :-o
Fábio Lebrão
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP

Imagina, brother.

Precisando, tamos ai.

Abraços,

Trevisolli
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes