Eingabeparameter
(Es gibt keine Eingabeparameter)
Ausgabeparameter
Parameter | Typ | Beschreibung |
---|---|---|
GEN_TTID |
INTEGER |
Der neue Primary Key Wert. |
Beschreibung
Damit erhält man einen neuen Primary Key für die TITEL Tabelle.
Definition
CREATE PROCEDURE NEW_TIID
RETURNS (
GEN_TTID INTEGER)
AS
DECLARE VARIABLE ATIID INTEGER;
BEGIN
GEN_TTID = GEN_ID(TIID_GEN, 2);
/* Bei negativem Wert diesen zuruecksetzen */
IF (GEN_TTID < 0) THEN
BEGIN
/* Bei diesem Wert funktioniert das zuruecksetzen auf 0 nicht! */
IF (GEN_TTID = -2147483648) THEN
ATIID = GEN_ID(TIID_GEN, 2);
/* Den Generator Wert auf 0 setzen */
ATIID = GEN_ID(TIID_GEN, -GEN_ID(TIID_GEN, 0));
/* Gerader und ungerader Wert beruecksichtigen */
GEN_TTID = GEN_ID(TIID_GEN, (BIN_AND(GEN_TTID, 1) + 2));
END
ATIID = NULL;
/* Pruefen ob es diesen Wert schon als Primary Key gibt */
SELECT TIID FROM TITEL WHERE TIID = :GEN_TTID
INTO :ATIID;
/* Solange bis ein freier Wert gefunden wird! */
WHILE (ATIID IS NOT NULL) DO
BEGIN
ATIID = NULL;
GEN_TTID = GEN_ID(TIID_GEN, 2);
IF (GEN_TTID < 0) THEN
EXCEPTION THROW_FULL_TIID;
SELECT TIID FROM TITEL WHERE TIID = :GEN_TTID
INTO :ATIID;
END
END
![]() ![]() ![]() |