All pastes #474777 Raw Edit

Mine

public sql v1 · immutable
·published 2007-05-07 00:16 UTC
rendered paste body
DROP TYPE pruefungen_t FORCE;DROP TYPE pruefungsordnung_t FORCE;DROP TYPE pruefung_t FORCE;DROP TYPE student_t FORCE;DROP TYPE fachpruefung_t FORCE;DROP TYPE fachpruefungen_t FORCE;DROP TYPE note_t FORCE;DROP TYPE noten_t FORCE;--eigene datentypenCREATE OR REPLACE TYPE pruefung_t AS OBJECT  (  Pruefungsnummer varchar2(8),  Bezeichnung     varchar2(40)) NOT FINAL;/CREATE OR REPLACE TYPE pruefungen_t AS TABLE OF REF pruefung_t;/ CREATE OR REPLACE TYPE fachpruefung_t UNDER pruefung_t (  Studienphase      char(1),  Studienleistungen pruefungen_t);/CREATE OR REPLACE TYPE fachpruefungen_t AS TABLE OF REF fachpruefung_t;/CREATE OR REPLACE TYPE note_t as OBJECT (  Datum         date,  Note          number(2,1),  Ref_Pruefung  REF pruefung_t);/CREATE OR REPLACE TYPE noten_t AS TABLE OF note_t;/ CREATE OR REPLACE TYPE pruefungsordnung_t as OBJECT (  STG             varchar2(3),  Version         number(2),  Fachpruefungen  fachpruefungen_t);/ CREATE OR REPLACE TYPE student_t AS OBJECT (  Matrikelnummer                number(8),  Nachname                      varchar2(40),  Vorname                       varchar2(40),  PO                            REF pruefungsordnung_t,  Erbrachte_Pruefungsleistungen noten_t,  Vorpruefung                   number(2,1),  Abschlussarbeit               number(2,1),  Abschlussnote                 number(2,1)); /--typisierte tabellen:  DROP TABLE pruefung_tab;CREATE  TABLE pruefung_tab OF pruefung_t (     Pruefungsnummer PRIMARY KEY,     Bezeichnung NOT NULL );  DROP TABLE pruefungsordnung_tab;CREATE TABLE pruefungsordnung_tab OF pruefungsordnung_t (     STG NOT NULL,     Version NOT NULL,     Fachpruefungen NULL ) NESTED TABLE Fachpruefungen STORE AS nested_fachpruefung_tab;  DROP TABLE student_tab;CREATE TABLE student_tab OF student_t (     Matrikelnummer PRIMARY KEY,     Nachname NOT NULL,     Vorname NOT NULL,     PO NOT NULL,     Erbrachte_Pruefungsleistungen NULL,     Vorpruefung NULL,     Abschlussarbeit NULL,     Abschlussnote NULL ) nested table Erbrachte_Pruefungsleistungen store as nested_pruefungsleistungen_tab;---------------------------------------------------------------------------------aufgabe 1aINSERT INTO pruefung_tab VALUES('WI2471', 'Datenbanken I');INSERT INTO pruefung_tab VALUES('WI3671', 'Datenbanken II'); INSERT INTO pruefung_tab VALUES( fachpruefung_t( 'WIFP47','Datenbank','C',     pruefungen_t(                 ( SELECT ref(p) FROM pruefung_tab p WHERE p.Pruefungsnummer = 'WI2471' ),                 ( SELECT ref(p) FROM pruefung_tab p WHERE p.Pruefungsnummer = 'WI3671' )                 )             ) );--sql developer abfrage:SELECT * FROM pruefung_tab p WHERE Bezeichnung like 'D%';--sql web view abfrage:--SELECT VALUE(p) FROM pruefung_tab p WHERE Bezeichnung like 'D%';---------------------------------------------------------------------------------aufgabe 1bDELETE FROM pruefung_tab;-- pruefungen anlegenINSERT INTO pruefung_tab      (SELECT pruefung_t(Pruefungsnummer, Bezeichnung) from pruefungsordnung WHERE STG='WI' AND PO_VERSION='2' AND ART = 'FT' ); -- fachpruefungen anlegen INSERT INTO pruefung_tab (     SELECT fachpruefung_t  (       a.Pruefungsnummer, a.Bezeichnung, a.Abschnitt,        ( CAST( MULTISET(             SELECT ref(b) FROM pruefung_tab b INNER JOIN pruefungsordnung c ON  b.Pruefungsnummer = c.Pruefungsnummer WHERE c.Fachpruefung_FK = a.Pruefungsnummer              ) AS pruefungen_t )   )       )  FROM pruefungsordnung a WHERE a.Fachpruefung_FK IS NULL AND a.STG='WI' AND a.ART='FP' AND a.PO_VERSION='2'); ---------------------------------------------------------------------------------aufgabe 1c DELETE FROM pruefungsordnung_tab;--datensatz einfügenINSERT INTO pruefungsordnung_tab VALUES( 'WI', '2',         (CAST(MULTISET(             SELECT TREAT(REF(a) as REF fachpruefung_t) FROM pruefung_tab a              INNER JOIN pruefungsordnung b ON a.pruefungsnummer = b.pruefungsnummer             WHERE b.stg='WI' AND b.po_version=2 and b.ART='FP'   ) as fachpruefungen_t)         )  ); -- testen (24 zeilen erwartet)select value(x).pruefungsnummer AS Pruefungsnummer, value(x).bezeichnung AS BEZEICHNUNGfrom table(select fachpruefungenfrom pruefungsordnung_tabwhere version=2) xorder by value(x).bezeichnung---------------------------------------------------------------------------------aufgabe 1eDELETE FROM student_tab;INSERT INTO student_tab VALUES( '67234', 'Fleissig', 'Lieschen',  (SELECT ref(a) FROM pruefungsordnung_tab a WHERE a.STG='WI' AND a.Version='2'), NULL,NULL,NULL,NULL );INSERT INTO student_tab VALUES( '36123', 'Palaver', 'Patrick',  (SELECT ref(a) FROM pruefungsordnung_tab a WHERE a.STG='WI' AND a.Version='2'), NULL,NULL,NULL,NULL ); ---------------------------------------------------------------------------------aufgabe 1fupdate student_tab a set Erbrachte_Pruefungsleistungen=noten_t(    note_t('07.07.2006',1.3, (SELECT ref(b) FROM pruefung_tab b WHERE b.Bezeichnung='Allgemeine BWL/Recht') ),    note_t('11.07.2006',5.0, (SELECT ref(b) FROM pruefung_tab b WHERE b.Bezeichnung='Grundlagen d.Informatik') ),    note_t('03.02.2007',2.0, (SELECT ref(b) FROM pruefung_tab b WHERE b.Bezeichnung='Grundlagen d.Informatik') ),    note_t('07.02.2007',1.7, (SELECT ref(b) FROM pruefung_tab b WHERE b.Bezeichnung='Datenbanken I') )    )where a.Nachname='Fleissig' AND a.Vorname='Lieschen';