CREATE OR REPLACE PROCEDURE PROC_INS_KLAUSUR
(
R_ID IN OUT INTEGER,
R_VERSION IN OUT INTEGER,
R_KURS_ID IN INTEGER,
R_KURS_VERSION IN INTEGER,
R_ART IN VARCHAR2,
R_ORT IN VARCHAR2,
R_DATUM IN DATE,
R_BEGINN IN DATE,
R_ENDE IN DATE
)
IS
BEGIN
IF (R_ID IS NULL) THEN
/* neuen Inhalt erstellen */
SELECT ID_Inhalt.nextval INTO R_ID FROM Dual;
INSERT INTO inhalt (Id, Inhaltstyp_Id) VALUES (R_ID, 7);
R_VERSION := 1;
ELSE
/* neue Version erstellen */
SELECT MAX(Version)+1 INTO R_VERSION
FROM Versionierter_inhalt WHERE Id = R_ID;
END IF;
/* neuen versionierten Inhalt erstellen */
INSERT INTO Versionierter_inhalt (Id, Version)
VALUES (R_ID, R_VERSION);
/* Einfuegen der Daten in KLAUSUR */
INSERT INTO KLAUSUR
(ID,VERSION,KURS_ID,KURS_VERSION,ART,ORT,DATUM,BEGINN,ENDE)
VALUES
(R_ID,R_VERSION,R_KURS_ID,R_KURS_VERSION,R_ART,R_ORT,R_DATUM,
R_BEGINN,R_ENDE);
/* Aktivieren */
proc_aktivieren (R_ID, R_VERSION);
END;
/