Puede tener un flujo de mensajes que procese un mensaje que contenga subcampos delimitados. Puede codificar ESQL para extraer un subcampo del contenido que lo encierra si conoce los delimitadores del subcampo.
Si crea una función que realice esta tarea, o una similar, puede invocarla en los módulos ESQL (para los nodos Compute, Database y Filter) y desde los archivos de correlación (utilizados por los nodos DataDelete, DataInsert, DataUpdate, Extract, Mapping y Warehouse).
El ejemplo de función siguiente extrae un subcampo determinado de un mensaje que está delimitado por un carácter específico.
CREATE FUNCTION SelectSubField (SourceString CHAR, Delimiter CHAR, TargetStringPosition INT) RETURNS CHAR -- Esta función devuelve una subserie en una posición de parámetro TargetStringPosition dentro -- de la SourceString del parámetro que se ha pasado. Por ejemplo, se puede utilizar para: -- SelectSubField(MySourceField,' ',2) que seleccionar el segundo subcampo del campo -- MySourceField delimitado por un espacio en blanco. Si MySourceField tiene el valor -- "First Second Third", la función devolverá el 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 si no se encuenrtra el delimitador, salir del bucle. 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 -- Suprima todo lo que siga al delimitador en la serie de caracteres SET WorkingSource = SUBSTRING(WorkingSource FROM 1 FOR DelimiterPosition); SET WorkingSource = TRIM(TRAILING Delimiter FROM WorkingSource); END IF; RETURN WorkingSource; END;
Conceptos relacionados
Flujos de mensajes
Tareas relacionadas
Diseño de un flujo de mensajes
Definición del contenido del flujo de mensajes
Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
ESQL
Sentencia DECLARE
Función POSITION
Sentencia SET
Función SUBSTRING
Función TRIM
Sentencia WHILE
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
ac20400_ |