WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Selecionando um Subcampo de um Campo Maior

Você pode ter um fluxo de mensagens que processe uma mensagem que contém subcampos delimitados. Você pode codificar o ESQL para extrair um subcampo do conteúdo ao redor se conhecer os delimitadores do subcampo.

Se você criar uma função que execute essa tarefa, ou uma similar, poderá chamá-la a partir dos dois módulos ESQL (para os nós Compute, Banco de Dados, DatabaseInput e Filter) e a partir dos arquivos de mapeamento (usados pelo nó Mapeamento).

O seguinte exemplo de função extrai um subcampo específico de uma mensagem que é delimitada por um caractere específico.

CREATE FUNCTION SelectSubField 
       (SourceString CHAR, Delimiter CHAR, TargetStringPosition INT) 
d       RETURNS CHAR
-- Essa função retorna uma subcadeia na posição do parâmetro
TargetStringPosition dentro do      
-- parâmetro transmitido SourceString.  Um exemplo de uso pode ser:
-- SelectSubField(MySourceField,' ',2) que selecionará o segundo
subcampo do
-- campo MySourceField delimitado por um espaço em branco.  Se
MySourceField tiver o valor
-- "First Second Third" a função retornará o valor "Second"
  BEGIN
    DECLARE DelimiterPosition INT;
    DECLARE CurrentFieldPosition INT 1;
    DECLARE StartNewString INT 1;
    DECLARE WorkingSource CHAR SourceString;
    SET DelimiterPosition = POSITION(Delimiter IN SourceString);
    WHILE CurrentFieldPosition < TargetStringPosition
     	DO
     		IF DelimiterPosition = 0  THEN
   			-- DelimiterPosition será 0 se o delimitador não for localizado 
         -- saia do loop
     			SET CurrentFieldPosition = TargetStringPosition;
     		ELSE
     			SET StartNewString = DelimiterPosition + 1;
     			SET WorkingSource = SUBSTRING(WorkingSource FROM
StartNewString);
     			SET DelimiterPosition = POSITION(Delimiter IN WorkingSource);
     			SET CurrentFieldPosition = CurrentFieldPosition + 1;
     		END IF;
    END WHILE;
    IF DelimiterPosition > 0 THEN
       -- Remova tudo após o delimitador da cadeia
       SET WorkingSource = SUBSTRING(WorkingSource FROM 1 FOR
DelimiterPosition);     	
       SET WorkingSource = TRIM(TRAILING Delimiter FROM
WorkingSource);
    END IF;  
    RETURN WorkingSource;
END;	
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:28:27


Tópico de TarefaTópico de Tarefa | Versão 8.0.0.5 | ac20400_