Eingabeparameter
Parameter | Typ | Beschreibung |
---|---|---|
SRCSNID |
INTEGER |
Ein Primary Key Wert von der SENDUNGEN Tabelle |
SRCSEPOSITION |
INTEGER |
Damit wird das zu verschiebende Element über die SePositon festgelegt. |
DESTSNID |
INTEGER |
Ein Primary Key Wert von der SENDUNGEN Tabelle |
DESTSEPOSITION |
INTEGER |
Gibt die Ziel Position an, wohin verschoben werden soll. |
MOVEGROUP |
INTEGER |
Damit wird angegeben, ob nur ein Element oder eine ganze Gruppe verschoben werden soll. |
BEFOREDEST |
INTEGER |
Damit wird angegeben ob vor oder nach der angegebenen DestSePosition hin verschoben werden soll. |
Ausgabeparameter
Parameter | Typ | Beschreibung |
---|---|---|
NEWDESTSEID |
INTEGER |
Primary Key Wert von der SENDEELEMENTE Tabelle |
NEWDESTSEPOSITION |
INTEGER |
Gibt die neue Ziel Position zurück. |
Beschreibung
Verschiebt ein Sendeelement (mit Klammer) oder auch ganze Blöcke. (Ruft SE_MOVE_BLOCK auf)
Definition
CREATE PROCEDURE SE_MOVE(
SRCSNID INTEGER,
SRCSEPOSITION INTEGER,
DESTSNID INTEGER,
DESTSEPOSITION INTEGER,
MOVEGROUP INTEGER,
BEFOREDEST INTEGER)
RETURNS (
NEWDESTSEID INTEGER,
NEWDESTSEPOSITION INTEGER)
AS
declare variable NEWSEID integer;
declare variable NEWSESNID integer;
declare variable NEWSEDATUM date;
declare variable NEWSEZEIT integer;
declare variable NEWSESPPOSITION integer;
declare variable NEWSESNPOSITION integer;
declare variable NEWSEPOSITION integer;
declare variable NEXTSEPOSITION integer;
declare variable NUMBEROFSEINDESTSN integer;
BEGIN
/* Genaue Ziel-Position festlegen (Vor/Nach Klammerung) */
SELECT
COUNT (SEID)
FROM sendeelemente
WHERE SESNID = :destsnid
INTO :NUMBEROFSEINDESTSN;
if (NUMBEROFSEINDESTSN>0) then begin
EXECUTE PROCEDURE SE_GETBLOCKPOS (DestSnId, DestSePosition, BeforeDest)
RETURNING_VALUES (NewSeId,
NewSeSnId,
NewSeDatum,
NewSeZeit,
NewSeSpPosition,
NewSeSnPosition,
NewSePosition,
NextSePosition);
NewDestSeId = NewSeId;
NewDestSePosition = NewSePosition;
end else begin
/* Es gibt noch keine Elemente in der Sendung, Sendungseigenschaften
muessen anders ermittelt werden */
NewDestSePosition = DestSePosition;
NewSeSnId = DestSnId;
NextSePosition = NewDestSePosition + 500;
SELECT SPDATUM, SNPOSITION
FROM SENDUNGEN INNER JOIN SENDEPLAENE ON SNSPID = SPID
WHERE SNID=:destsnid
INTO :NewSeDatum, :NewSeSnPosition;
NewSeZeit = NewSeSnPosition * 36 * 1000;
NewSeSpPosition = 0;
end
/* Ab aktueller Positon + 1 vorwaerts Elemente updaten (verschieben) */
EXECUTE PROCEDURE SE_MOVE_BLOCK (SrcSnId,
SrcSePosition,
NewSeSnId,
NewSeDatum,
NewSeZeit,
NewSeSpPosition,
NewSeSnPosition,
NextSePosition,
MoveGroup,
0)
RETURNING_VALUES (NewDestSeId,
NewDestSePosition);
/* Ab aktueller Positon reuckwaerts Elemente updaten (verschieben) */
EXECUTE PROCEDURE SE_MOVE_BLOCK (SrcSnId,
SrcSePosition,
NewSeSnId,
NewSeDatum,
NewSeZeit,
NewSeSpPosition,
NewSeSnPosition,
NextSePosition,
MoveGroup,
1)
RETURNING_VALUES (NewDestSeId,
NewDestSePosition);
/* Positionsnummern der Sendung neu durchnumerieren */
EXECUTE PROCEDURE SE_RENUMPOSITION (NewSeSnId);
END
![]() ![]() ![]() |