PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Lendo linha de um arquivo formatado e trnasformando em Colunas #478931

14/05/2014

0

Varias vezes topamos com arquivos formatados e temos de processa-los para gravarmos a informação no nosso sistema, e por necessidade de tornar mais rápido e generico construir essa rotina e espero que ajude. Qualquer comentário e melhoramento será bem vindo.
-- Considerando que eu tenha uma linha :
-- Linha varchar2(1000):='|12|MARIA HOSER DE ALMEIDA|54000000|RUA EMBAIXADOR|1233|RECIFE|PE|BRASIL|12323445432|ISENTO|';
-- Preciso Ler a Linha como Coluna
-- Separador =  Separa CHAR(1):='|';
-- Executo o loop lendo cada campo como se fosse uma linha

for i in (select Rownum Numero,
                     SUBSTR(A.Str||Separa,
                            INSTR(A.Str||Separa , Separa, 1, Rownum )  + 1,
                            INSTR(A.Str||Separa , Separa, 1, Rownum+1) -
                            INSTR(A.Str||Separa , Separa, 1, Rownum )  - 1) Campo
                       from (select Linha Str
                               from dual) A,
                            all_objects B
                      where rownum < length(A.Str) - length(REPLACE(A.Str,Separa)) + 1)
     loop

      -- Salva o Nome do Cliente
      if (i.Numero = 2) then
         vNomeCliente:=TRIM(i.Campo);
      end if;

      -- Salva a Rua do Cliente
      if (i.Numero = 4) then
         vEndereco:=TRIM(i.Campo);
      end if;

      -- Salva o Numero do Endereço
      if (i.Numero = 5) then         
         vNumero:=TO_NUMBER(TRIM(i.Campo));
      end if;

      -- Salva a Uf
      if (i.Numero = 7) then     
         vUf:=TRIM(i.Campo);
      end if;

      -- Salva Inscrição Estadual e Grava Registro
      if (i.Numero = 10) then
         vInscEst:=TRIM(i.Campo);
         Grava_Tabela(vNomeCliente, vEndereco, vNumero, vUf, vInscEst);
      end if;

     end loop;
Lourival Queiroz

Lourival Queiroz

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar