Añada los módulos de código ESQL siguientes al archivo
Error_Handler.esql. Si lo desea, puede copiar y pegar el código ESQL directamente en el archivo ESQL.
Para obtener instrucciones, consulte
Desarrollo de ESQL.
CREATE FILTER MODULE Error_Handler_Filter
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
IF Root.MQMD.BackoutCount='0' THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END;
END MODULE;
CREATE DATABASE MODULE Error_Handler_Database
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
DECLARE Error INTEGER;
DECLARE Text CHARACTER;
DECLARE Place INTEGER;
DECLARE LastPlace INTEGER;
DECLARE NodeName CHARACTER;
DECLARE Label CHARACTER;
DECLARE FlowName CHARACTER;
-- Establecer el punto de partida
DECLARE start REFERENCE TO ExceptionList.*[1];
WHILE start.Number IS NOT NULL DO
SET Error = start.Number;
IF Error = 3001 THEN
SET Text = SUBSTRING(start.Insert.Text FROM 1 FOR 250);
ELSE
SET Text = SUBSTRING(start.Text FROM 1 FOR 250);
END IF;
SET Label = start.Label;
SET Place = POSITION('.' IN Label);
SET LastPlace = Place;
WHILE Place <>0 DO
SET Label=SUBSTRING(Label FROM (Place+1));
SET Place=POSITION('.' IN Label);
SET LastPlace = LastPlace + Place;
END WHILE;
SET Label=start.Label;
SET FlowName=SUBSTRING(Label FROM 1 FOR (LastPlace-1));
SET NodeName=SUBSTRING(Label FROM (LastPlace+1));
-- Mover el inicio al último hijo del campo al que señala actualmente
MOVE start LASTCHILD;
END WHILE;
INSERT INTO Database.ERRORS(MSGID,TEXT,ERRORNUM, ERRORDATE,MSGDATA,FLOWNAME,NODENAME)
VALUES(CAST(Root.MQMD.MsgId AS BLOB),Text,Error,CURRENT_TIMESTAMP,BITSTREAM(Root),
FlowName,NodeName);
RETURN TRUE;
END;
END MODULE;