Prozeduren Previous topic Chapter index Next topic

NEW_TIID

 

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

 

     Previous topic Chapter index Next topic