Codigo de barras

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
s_feitoza
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Qui, 29 Nov 2007 5:04 pm
Localização: São Paulo

Bom Tarde... Tenho a seguinte situação e estou com um pouco de dificuldade para resolver e menos tempo ainda. Tenho o resuldado de uma leitura de codigo de barra que me traz o codigo
'(01)07898357410015(15)040825(30)25(10)N2A' porem esses falores entre um par de parentezes nem sempre é fixo e existe uma regra para seguir por exemplo se o (01) caracteriza que o tamanho do campo é 16
já o (00) caracteriza que o tamanho do campo é 20
e assim por diante... isso para campo do tipo fixo e ainda tenho que verificar campos variaveis... Gostaria de saber se alguém já desenvolveu alguma coisa do tipo ou poderia me dar uma LUZ...

Grato desde já Sil...
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Boa tarde.

Uma dica, talvez ajude, seria verificar com INSTR, que tipo de informação possui a linha.
Para verificar, por exemplo, se existe o tipo de informação = a '(01)', verifique com o código abaixo, passando toda a instrução e,
o valor que você deseja verificar.

Selecionar tudo

SELECT INSTR('(01)07898357410015(15)040825(30)25(10)N2A','(01)')
  FROM dual;
Caso o retorno seja diferente de Zero, significa que encontrou a informação e, em qual posição essa informação se encontra.
Em PL/SQL, seria mais ou menos isso:

Selecionar tudo

DECLARE 
  VTIPO_REGISTRO NUMBER;
  VSTRING        VARCHAR2(1000) := '(01)07898357410015(15)040825(30)25(10)N2A';  
BEGIN
  SELECT INSTR(VSTRING,'(01)')
    INTO VTIPO_REGISTRO
    FROM DUAL;
    
  IF VTIPO_REGISTRO != 0
  THEN
     dbms_output.put_line('Na posição '||to_char(VTIPO_REGISTRO)||' existe o tipo de registro 01.');
  END IF;    
END;  
Veja se lhe ajuda e, caso não dê certo, mande pra gente.
Responder
  • Informação