Prozeduren Previous topic Chapter index Next topic

TE_SE_COPY

 

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

 

     Previous topic Chapter index Next topic