Problema na "String" preciso da ajuda de vocês ur

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
katia
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Sex, 09 Jan 2009 6:05 pm
Localização: são paulo

Pessoal, bom dia.

Estou com uma dúvida, já fiz uma procedure assim mais faz muito e não estou me lembrando.

É o seguinte:

Fiz uma procedure de importação que está funcionando certo, mas tem um porém, exemplo:

Tenho um determinado campo, onde comparo no arquivo de importação:

COLUNA "CWP001" até ai tudo bem, mas não é um campo fixo varia de acordo que digitam.

Estou tendo problema nesta hora, se o campo vem com (6) dígitos dá certo , se vir com (11) 'WPP-200-01A' dá erro.

Veja abaixo:


v_CAMPO_1 := substr( vLineBuf, 1,6);
v_CAMPO_2 := substr( vLineBuf, 8,20);

Como faço para pegar independente da posição que esteja,

o arquivo vem assim:

( CWP001,01/01/2008 )

Muito obrigada.

Developer Oracle.
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Qual a mensagem de erro? (ORA-?????)
katia
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Sex, 09 Jan 2009 6:05 pm
Localização: são paulo

Na verdade não é bem um erro...somente quero saber como faço para pegar a string indepedente do tamanho antes da ',' , porque no arquivo difere:

Veja exemplo:

Tenho um arquivo .csv:

WPP-200-01A,22/01/2008
CWP002,10/01/2007
CWP003,16/02/2008


Então na hora da importação joga certo no forms, somente a primeira linha:

Que é:

WPP-200-01A 22/01/2008 - correto

Na segunda em diante a linha vem errado assim:

CWP002,10/01 /2007 
CWP003,16/02 /2008 

Quero saber como faço para importar certo , preciso pegar a string sempre antes ‘,’, entendeu?

Grata.
marcelo_nunes
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Seg, 08 Set 2008 7:35 pm
Localização: Ribeirão Preto - SP
Marcelo Nunes
Analista/Desenvolvedor Oracle

O comando abaixo irá pegar toda a parte da string até que seja encontrada a primeira vírgula :

Selecionar tudo

substr(SUA_STRING, 1, instr(SUA_STRING, ',') - 1)
Caso não seja encontrada nenhuma vírgula na string o retorno deste comando será nulo!
RodrigoValentim
Moderador
Moderador
Mensagens: 367
Registrado em: Ter, 25 Mar 2008 3:41 pm
Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer

Campanha: Faça uma pesquisa antes de perguntar!!!

Tenta isso.

Selecionar tudo

SQL> SELECT substr('WPP-200-01A,22/01/2008',0,instr('WPP-200-01A,22/01/2008',',')-1),
  2         substr('WPP-200-01A,22/01/2008',instr('WPP-200-01A,22/01/2008',',')+1,length('WPP-200-01A,22/01/2008'))
  3  FROM dual
  4  ;
 
SUBSTR('WPP-200-01A,22/01/2008 SUBSTR('WPP-200-01A,22/01/2008
------------------------------ ------------------------------
WPP-200-01A                    22/01/2008

Selecionar tudo

SQL> SELECT substr('CWP003,16/02/2008',0,instr('CWP003,16/02/2008',',')-1),
  2         substr('CWP003,16/02/2008',instr('CWP003,16/02/2008',',')+1,length('CWP003,16/02/2008'))
  3  FROM dual
  4  ;
 
SUBSTR('CWP003,16/02/2008',0,I SUBSTR('CWP003,16/02/2008',INS
------------------------------ ------------------------------
CWP003                         16/02/2008
katia
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Sex, 09 Jan 2009 6:05 pm
Localização: são paulo

Valeu pessoal, deu certo.

Grata.
Responder
  • Informação
  • Quem está online

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