Eingabeparameter
Parameter | Typ | Beschreibung |
---|---|---|
SEIDLIST |
VARCHAR(8190) |
Eine strichpunktseparierte Liste mit den Wertpaaren alte SEID und neue SEID, welche über ein Doppelpunkt getrennt ist. |
REFSEIDLIST |
VARCHAR(8190) |
Eine kommaseparierte Liste mit SEID Werten. |
Ausgabeparameter
(Es gibt keine Ausgabeparameter)
Beschreibung
Damit wird nach dem Kopieren von Sendeelemente noch die TriggeredEvents kopiert.
Definition
CREATE PROCEDURE TE_SE_COPY(
SEIDLIST VARCHAR(8190),
REFSEIDLIST VARCHAR(8190))
AS
DECLARE VARIABLE SeId INTEGER;
DECLARE VARIABLE NewSeId INTEGER;
DECLARE VARIABLE StartPos INTEGER;
DECLARE VARIABLE EndPos INTEGER;
DECLARE VARIABLE MinNewTeId INTEGER;
DECLARE VARIABLE SearchSeId VARCHAR(12);
DECLARE VARIABLE SeIdSubList VARCHAR(8190);
BEGIN
IF (SeIdList != '') THEN BEGIN
EXECUTE PROCEDURE NEW_TEID RETURNING_VALUES MinNewTeId;
/* TESEID kopieren */
FOR
SELECT Result FROM SPLIT_STRING(:SeIdList)
INTO :SeId
DO BEGIN
SearchSeId = ';' || CAST(SeId AS VARCHAR(10)) || ':';
StartPos = F_STRPOS(SearchSeId, RefSeIdList);
IF (StartPos > 0) THEN BEGIN
StartPos = StartPos + STRLEN(SearchSeId);
SeIdSubList = SUBSTR8190(RefSeIdList, StartPos, STRLEN(RefSeIdList));
EndPos = F_STRPOS(';', SeIdSubList);
IF (EndPos > 0) THEN BEGIN
SeIdSubList = SUBSTR8190(SeIdSubList, 1, EndPos - 1);
END
NewSeId = CAST(SeIdSubList AS INTEGER);
INSERT INTO TRIGGEREDEVENTS (
TETIID,TESEID,TETYP,TEZEIT,TEDATA1,TEDATA2,TETRIGGEREDSEID,TETRIGGEREDTIID
)
SELECT TETIID,:NewSeId,TETYP,TEZEIT,TEDATA1,TEDATA2,TETRIGGEREDSEID,TETRIGGEREDTIID
FROM TRIGGEREDEVENTS
WHERE (TESEID = :SeId);
END
WHEN ANY DO
NewSeId = 0;
END
/* TETRIGGEREDSEID anpassen */
FOR
SELECT Result FROM SPLIT_STRING(:SeIdList)
INTO :SeId
DO BEGIN
SearchSeId = ';' || CAST(SeId AS VARCHAR(10)) || ':';
StartPos = F_STRPOS(SearchSeId, RefSeIdList);
IF (StartPos > 0) THEN BEGIN
StartPos = StartPos + STRLEN(SearchSeId);
SeIdSubList = SUBSTR8190(RefSeIdList, StartPos, STRLEN(RefSeIdList));
EndPos = F_STRPOS(';', SeIdSubList);
IF (EndPos > 0) THEN BEGIN
SeIdSubList = SUBSTR8190(SeIdSubList, 1, EndPos - 1);
END
NewSeId = CAST(SeIdSubList AS INTEGER);
UPDATE TRIGGEREDEVENTS SET TETRIGGEREDSEID = :NewSeId
WHERE (TETRIGGEREDSEID = :SeId) AND (TEID > :MinNewTeId);
END
WHEN ANY DO
NewSeId = 0;
END
END
END
![]() ![]() ![]() |