--funktionskopf einfügen, kann alternativ auch direkt in der typdefinition gemacht werden--aber da diese am anfang steht wrid das hier per alter gemachtALTER TYPE pruefungsordnung_t ADD MEMBER FUNCTION create_student(matnr number, name varchar2, vorname varchar2) RETURN student_t CASCADE;--funktionskörper erstellenCREATE OR REPLACE TYPE BODY pruefungsordnung_t AS MEMBER FUNCTION create_student(matnr number, name varchar2, vorname varchar2) RETURN student_t AS student student_t; BEGIN -- student object erstellung student := student_t(matnr, name, vorname, ref(self), null, null, null, null); -- in die db stellen INSERT INTO student_tab VALUES(student); -- zurückgeben RETURN student; END;END; -- Select * from student_tab WHERE matrikelnummer = pruefungsordnung_tab.create_student(666,'dampf','hans').Matrikelnummer;--Aufgabe 2b--Erstelle eine Methode add_pruefung(p pruefung_t, note number), welche für einen Studierenden--für die angegebene Prüfung eine Note einträgt. Als Datum für die Prüfung soll das--aktuelle Datum gesetzt werden.--Testprogramm siehe Anhang BALTER TYPE student_t ADD MEMBER PROCEDURE add_pruefung(p pruefung_t, n number) CASCADE;--funktionskörper erstellenCREATE OR REPLACE TYPE BODY student_t AS MEMBER PROCEDURE add_pruefung(p pruefung_t, n number) AS note note_t; student student_t; pruefung ref pruefung_t; arrayindex number; BEGIN pruefung := REF(p); note := note_t(sysdate, n, pruefung); arrayindex := self.Erbrachte_Pruefungsleistungen.count()+1; self.Erbrachte_Pruefungsleistungen.extend(); self.Erbrachte_Pruefungsleistungen(arrayindex) := note; UPDATE student_tab a SET a.Erbrachte_Pruefungsleistungen = self.Erbrachte_Pruefungsleistungen WHERE a.Matrikelnummer = a.Matrikelnummer; END;END;