Hallo,
als letzte Aufgabe in Datenbanken II steht eine Aufgabe mit Prozeduren an.
Man soll 2 Tabellen (Angestellte und Arbeiter) in eine Tabelle (Personal) zusammenführen. Weiter sollen Personaldaten, die dann in die Personal-Tabelle eingetragen werden, auch in den Angestellten- und Arbeiter-Tabellen auftauchen. Außerdem soll man eine Zuordnungstabelle führen, aus welchen Tabellen die Daten für die Personal-Tabelle stammen. Ursprünglich war mein Plan der, dass ich die Personal-ID zusammen mit einer Referenz auf einen Angestellten bzw einen Arbeiter in einer Zuordnungstabelle speichere. Irgendwie scheint sich die Referenz auf ein Objekt aber nicht so zu verhalten, wie z.B. in C++, jedenfalls hat das mit der Referenz überhaupt nicht funktioniert und SQL hat es geradezu herausgefordert, dass jetzt eben komplette Datensätze in der Zuordnungstabelle enden...
Es gibt dazu zwei Prozeduren:
Zum Test habe ich dann einige Testtabellen erstellt (angestellter, personal und arbeiter) und einen Testdatensatz in personal und angestellter angelegt.
dann habe ich versucht, die Prozeduren entsprechend zu testen:
Das Problem ist, dass item kein typ von u3_typ_angestellter ist. Es liegt irgendwie an dem Datentyp, der aus dem Cursor kommt. testangestellter%rowtype ist jedenfalls auch nicht vom typ u3_typ_angestellter. Ich kann also im besten Fall das Objekt nach item fetchen und dann ausgeben lassen, jedoch kann ich das Item dann in keinem Fall an die Prozedur übergeben. Die Frage ist nun, wie caste ich den wie_auch_immer_er_lauten_mag-Typ, der aus dem Cursor kommt, in etwas brauchbares? Die gütligen Castmöglichkeiten in SQL würde ich nämlich auch mal als eher... naja, freundlich gesagt, überschaubar bezeichnen...
schöne Grüße und Danke soweit
als letzte Aufgabe in Datenbanken II steht eine Aufgabe mit Prozeduren an.
Man soll 2 Tabellen (Angestellte und Arbeiter) in eine Tabelle (Personal) zusammenführen. Weiter sollen Personaldaten, die dann in die Personal-Tabelle eingetragen werden, auch in den Angestellten- und Arbeiter-Tabellen auftauchen. Außerdem soll man eine Zuordnungstabelle führen, aus welchen Tabellen die Daten für die Personal-Tabelle stammen. Ursprünglich war mein Plan der, dass ich die Personal-ID zusammen mit einer Referenz auf einen Angestellten bzw einen Arbeiter in einer Zuordnungstabelle speichere. Irgendwie scheint sich die Referenz auf ein Objekt aber nicht so zu verhalten, wie z.B. in C++, jedenfalls hat das mit der Referenz überhaupt nicht funktioniert und SQL hat es geradezu herausgefordert, dass jetzt eben komplette Datensätze in der Zuordnungstabelle enden...
Es gibt dazu zwei Prozeduren:
Code:
create or replace procedure linkePersonalMitArbeiter(personalnummer in number, arbeiter in u3_typ_arbeiter) is begininsert into u3_table_tabellenzuordnung values(personalnummer, null, arbeiter);end; create or replace procedure linkePersonalMitArbeiter(personalnummer in number, angestellter in u3_typ_angestellter) is begininsert into u3_table_tabellenzuordnung values(personalnummer, angestellter, null);end; a
dann habe ich versucht, die Prozeduren entsprechend zu testen:
Code:
declarecursor testangestellter (id_in in number) is select * from u3_testtable_angestellter where v_angstelltennummer = id_in; /*item testangestellter%ROWTYPE;*/ item u3_testtable_angestellter%ROWTYPE;beginopen testangestellter(123); fetch testangestellter into item; dbms_output.put('itemname: '); dbms_output.put_line(item.v_name); linkepersonalmitangestellten(1, item); close testangestellter;end; a
schöne Grüße und Danke soweit
Comment