Frage zu Triggern & Prozeduren in PL/SQL Oracle 9.1 --> dringend
Hi,
ich habe momentan das große Problem, dass ich aufgrund meiner Ausbildung zum Medieninformatiker mit dem Fall Trigger und Prozeduren in pl/sql sehr viel auseinander setzen muss, denn diesen Freitag steht in diesem Fach eine Abschlussprüfung an.
Deswegen sind meine Fragen zum thema DB , insbesondere pl/sql, sehr dringend.
Wir haben von unserem Dozenten 2 Aufgaben bekommen, und zwar einen Trigger zu erstellen, der bestimmte neue Werte aus Tabellen ausgibt und eine Prozedur, die bestimmte Dinge ausgibt.
Dazu habe ich folgende Probleme :
Zum Trigger
Beim Trigger ist mein Problem , dass ich nicht genau weiss wie ich an die Informationen "Ergebnis des Spielers" und "Ergebnis des Clans " kommen soll. Ich weiss, das man diese sachen im Grunde berechnen kann, aber wo kann ich die Informationen reintuen (Variable, Array, Cursor?) und wie hole ich mir die Infos überhaupt ( SELECT abfrage, view?). Muss ich dazu auch die Tabellen angeben, aus denen ich die Informationen hole? Kann man Cursor, Array etc überhaupt in Prozeduren verwenden und wenn nein, was verwende ich stattdessen?
Aber habe mir schon den Kopf darüber zerbrochen aber ich komme einfach nicht auf eine sinnvolle Lösung.
Außerdem
Zur Prozedur
Hier weiss ich nicht so recht, wie ich das Ergebnis pro Clan mit den dazugehörigen Spielern ausgeben soll.
Gegeben ist das folgende Datenmodell:
Spieler (snr, vorname, nachname, nickname, cnr) PK: snr
Clan (cnr, bezeichnung) PK: cnr
Wars (wnr, snr, ergebnis) PK: wnr, snr
Aufgaben :
Trigger
Erstellen Sie einen Trigger, der bei jeder Änderung (insert, update(ergebnis), delete) in der Tabelle Wars feuert. Jede Änderung soll sofort angezeigt werden:Vorname, Nachname, Clan, Ergebnis des Spielers, Ergebnis des Clans,
Durchschnitt des Spielers
Meine Lösung ( bzw der versuchte Ansatz
):
Prozedur
Aufgabe:
Erstellen Sie eine Prozedur, die jeweils das Ergebnis pro Clan und den jeweils zugehörigen Spielern ausgibt.
Bsp.: Warnummer: 1
-------------------------------
Alpha-Clan 20
-------------------------------
Thomas Alba 15
Jürgen Fert 5
-------------------------------
Beta-Clan 10
-------------------------------
Jonny Depp 8
Tom Cruise 2
Mein Lösungsansatz:
Vielen Dank schonmal im Vorraus für eure Hilfe
Mediax
Hi,
ich habe momentan das große Problem, dass ich aufgrund meiner Ausbildung zum Medieninformatiker mit dem Fall Trigger und Prozeduren in pl/sql sehr viel auseinander setzen muss, denn diesen Freitag steht in diesem Fach eine Abschlussprüfung an.
Deswegen sind meine Fragen zum thema DB , insbesondere pl/sql, sehr dringend.
Wir haben von unserem Dozenten 2 Aufgaben bekommen, und zwar einen Trigger zu erstellen, der bestimmte neue Werte aus Tabellen ausgibt und eine Prozedur, die bestimmte Dinge ausgibt.
Dazu habe ich folgende Probleme :
Zum Trigger
Beim Trigger ist mein Problem , dass ich nicht genau weiss wie ich an die Informationen "Ergebnis des Spielers" und "Ergebnis des Clans " kommen soll. Ich weiss, das man diese sachen im Grunde berechnen kann, aber wo kann ich die Informationen reintuen (Variable, Array, Cursor?) und wie hole ich mir die Infos überhaupt ( SELECT abfrage, view?). Muss ich dazu auch die Tabellen angeben, aus denen ich die Informationen hole? Kann man Cursor, Array etc überhaupt in Prozeduren verwenden und wenn nein, was verwende ich stattdessen?
Aber habe mir schon den Kopf darüber zerbrochen aber ich komme einfach nicht auf eine sinnvolle Lösung.
Außerdem
Zur Prozedur
Hier weiss ich nicht so recht, wie ich das Ergebnis pro Clan mit den dazugehörigen Spielern ausgeben soll.
Gegeben ist das folgende Datenmodell:
Spieler (snr, vorname, nachname, nickname, cnr) PK: snr
Clan (cnr, bezeichnung) PK: cnr
Wars (wnr, snr, ergebnis) PK: wnr, snr
Aufgaben :
Trigger
Erstellen Sie einen Trigger, der bei jeder Änderung (insert, update(ergebnis), delete) in der Tabelle Wars feuert. Jede Änderung soll sofort angezeigt werden:Vorname, Nachname, Clan, Ergebnis des Spielers, Ergebnis des Clans,
Durchschnitt des Spielers
Meine Lösung ( bzw der versuchte Ansatz

Code:
create or replace procedure ergebnisse
is
begin
declare
wnr wars.wnr%TYPE;
bezeichnung clan.bezeichnung%TYPE;
ergebnisclan smallint;
vorname spieler.vorname%TYPE;
nachname spieler.nachname%TYPE;
ergebnis wars.ergebnis%TYPE;
cursor ergebniscursor1 is select* from ergebnisseclan;
cursor ergebniscursor2 is select * from ergebnissespieler;
begin
open ergebniscursor1;
open ergebniscursor2;
fetch cursor ergebniscursor 1 into wnr, bezeichnung, ergebnisclan;
fetch cursor ergebniscursor 2 into vorname, nachname, ergebnis;
while ergebniscursor1 % FOUND and ergebniscursor2 % FOUND
loop
dbms.output.put_line ( ‘Warnummer: ‘ || wnr);
dbms.output.put_line ( ‘--------------------------‘);
dbms.output.put_line( bezeichnung || ‘ ‘ || ergebnisclan);
dbms.output.put_line ( vorname || ‘ ‘ || nachname || ‘ ‘ || ergebnis);
fetch cursor ergebniscursor 1 into wnr, bezeichnung, ergebnisclan;
fetch cursor ergebniscursor 2 into vorname, nachname, ergebnis;
end loop;
close ergebniscursor1;
close ergebniscursor2;
end;
end;
Prozedur
Aufgabe:
Erstellen Sie eine Prozedur, die jeweils das Ergebnis pro Clan und den jeweils zugehörigen Spielern ausgibt.
Bsp.: Warnummer: 1
-------------------------------
Alpha-Clan 20
-------------------------------
Thomas Alba 15
Jürgen Fert 5
-------------------------------
Beta-Clan 10
-------------------------------
Jonny Depp 8
Tom Cruise 2
Mein Lösungsansatz:
Code:
create or replace view ergebnisseclan ( wnr, bezeichnung, ergebnisclan) as
select wnr, bezeichnung, sum (snr*ergebnis) as ergebnisclan
from wars, clan,spieler
where spieler .snr = clan.snr
group by cnr
order by cnr desc;
create or replace view ergebnissespieler (vorname, nachname,ergebnis) as
select vorname, nachname, ergebnis
from clan, spieler
where clan.cnr = spieler.cnr
group by cnr
order by cnr desc;
create or replace procedure ergebnisse
is
begin
declare
wnr wars.wnr%TYPE;
bezeichnung clan.bezeichnung%TYPE;
ergebnisclan smallint;
vorname spieler.vorname%TYPE;
nachname spieler.nachname%TYPE;
ergebnis wars.ergebnis%TYPE;
cursor ergebniscursor1 is select* from ergebnisseclan;
cursor ergebniscursor2 is select * from ergebnissespieler;
begin
open ergebniscursor1;
open ergebniscursor2;
fetch cursor ergebniscursor 1 into wnr, bezeichnung, ergebnisclan;
fetch cursor ergebniscursor 2 into vorname, nachname, ergebnis;
while ergebniscursor1 % FOUND and ergebniscursor2 % FOUND
loop
dbms.output.put_line ( ‘Warnummer: ‘ || wnr);
dbms.output.put_line ( ‘--------------------------‘);
dbms.output.put_line( bezeichnung || ‘ ‘ || ergebnisclan);
dbms.output.put_line ( vorname || ‘ ‘ || nachname || ‘ ‘ || ergebnis);
fetch cursor ergebniscursor 1 into wnr, bezeichnung, ergebnisclan;
fetch cursor ergebniscursor 2 into vorname, nachname, ergebnis;
end loop;
close ergebniscursor1;
close ergebniscursor2;
end;
end;
Vielen Dank schonmal im Vorraus für eure Hilfe

Mediax
Zuletzt bearbeitet: