Hi
ich lerne gerade PL/SQL in der Schule. Wir haben eine Aufgabenstellung bekommen: Eine Tabelle Temporäre Tabelle Notendurchschnitt zu erstellen, durch diese soll es möglich sein den Notendurchschnitt pro Klasse und dort pro Fach zu errechnen.
Die Tabelle soll folgende Attribute enthalten: Klassen Bezeichnung (ND_K_KLASSE), Bezeichnung des Faches(ND_G_FACH), Anzahl der Prüfungen(ND_ANZPRUEF) und Summe der Noten(ND_SUMNOTEN).
Nachdem wir die Tabelle mit PL/SQL Statments gefüllt haben, sollen wir ein select * auf notendurchschnitt machen und danach die Tabelle löschen.
Ich create table funktioniert.
das select statment das die werte liefern soll ist auch richtig.
select * funktioniert auch
drop table auch
Mein Problem ist das ich einfach nicht verstehe, wie ich die werte die im Curser stehen in die Attribute vom notendurchschnittGN hinhein bekomme.
so wie der code jetzt ist felhlt bei select für den curser ein for update aber wenn ich das schreibe sagt er ich darf das bei diesem Statment nicht machen. ich habe im Internet gesucht, in unseren unterlagen, Lehrer gefragt, Lösungen von anderen gesehen ( die haben es aber nicht so wie ich gemacht) aber ich verstehe einfach nicht was ich machen soll.
Ich hoffe ihr könnt mir helfen es zu verstehen.
Es ist keine Hausaufgabe, die ich aus faulheit hier rein poste damit ihr sie für mich macht!
Code:
create table notendurchschnittGN
(
ND_K_KLASSE VARCHAR2(5 BYTE),
ND_G_FACH VARCHAR2(2 BYTE),
ND_ANZPRUEF NUMBER(3,0),
ND_SUMNOTEN NUMBER(3,0)
);
declare
cursor cur is SELECT S_K_KLASSE, P_G_FACH, SUM(P_NOTE), COUNT(P_NOTE)
FROM SCHUELER
INNER JOIN PRUEFUNGEN_JK ON P_S_KANDIDAT = S_SCHNR
group by S_K_KLASSE, P_G_FACH;
ND_K_KLASSE_rec notendurchschnittGN.ND_K_KLASSE%Type;
ND_G_FACH_rec notendurchschnittGN.ND_G_FACH%Type;
ND_ANZPRUEF_rec notendurchschnittGN.ND_ANZPRUEF%Type;
ND_SUMNOTEN_rec notendurchschnittGN.ND_SUMNOTEN%Type;
Begin
open cur;
fetch cur into nd_k_klasse_rec,nd_g_fach_rec,nd_anzpruef_rec,nd_s umnoten_rec;
update notendurchschnittGN
set nd_k_klasse = nd_k_klasse_rec
where current of cur;
close cur;
End;
/
SELECT * FROM notendurchschnittGN;
drop Table notendurchschnittGN;
ich lerne gerade PL/SQL in der Schule. Wir haben eine Aufgabenstellung bekommen: Eine Tabelle Temporäre Tabelle Notendurchschnitt zu erstellen, durch diese soll es möglich sein den Notendurchschnitt pro Klasse und dort pro Fach zu errechnen.
Die Tabelle soll folgende Attribute enthalten: Klassen Bezeichnung (ND_K_KLASSE), Bezeichnung des Faches(ND_G_FACH), Anzahl der Prüfungen(ND_ANZPRUEF) und Summe der Noten(ND_SUMNOTEN).
Nachdem wir die Tabelle mit PL/SQL Statments gefüllt haben, sollen wir ein select * auf notendurchschnitt machen und danach die Tabelle löschen.
Ich create table funktioniert.
das select statment das die werte liefern soll ist auch richtig.
select * funktioniert auch
drop table auch
Mein Problem ist das ich einfach nicht verstehe, wie ich die werte die im Curser stehen in die Attribute vom notendurchschnittGN hinhein bekomme.
so wie der code jetzt ist felhlt bei select für den curser ein for update aber wenn ich das schreibe sagt er ich darf das bei diesem Statment nicht machen. ich habe im Internet gesucht, in unseren unterlagen, Lehrer gefragt, Lösungen von anderen gesehen ( die haben es aber nicht so wie ich gemacht) aber ich verstehe einfach nicht was ich machen soll.
Ich hoffe ihr könnt mir helfen es zu verstehen.
Es ist keine Hausaufgabe, die ich aus faulheit hier rein poste damit ihr sie für mich macht!
Code:
create table notendurchschnittGN
(
ND_K_KLASSE VARCHAR2(5 BYTE),
ND_G_FACH VARCHAR2(2 BYTE),
ND_ANZPRUEF NUMBER(3,0),
ND_SUMNOTEN NUMBER(3,0)
);
declare
cursor cur is SELECT S_K_KLASSE, P_G_FACH, SUM(P_NOTE), COUNT(P_NOTE)
FROM SCHUELER
INNER JOIN PRUEFUNGEN_JK ON P_S_KANDIDAT = S_SCHNR
group by S_K_KLASSE, P_G_FACH;
ND_K_KLASSE_rec notendurchschnittGN.ND_K_KLASSE%Type;
ND_G_FACH_rec notendurchschnittGN.ND_G_FACH%Type;
ND_ANZPRUEF_rec notendurchschnittGN.ND_ANZPRUEF%Type;
ND_SUMNOTEN_rec notendurchschnittGN.ND_SUMNOTEN%Type;
Begin
open cur;
fetch cur into nd_k_klasse_rec,nd_g_fach_rec,nd_anzpruef_rec,nd_s umnoten_rec;
update notendurchschnittGN
set nd_k_klasse = nd_k_klasse_rec
where current of cur;
close cur;
End;
/
SELECT * FROM notendurchschnittGN;
drop Table notendurchschnittGN;
Comment