Zuerst mal ein höfliches Hallo an alle :-)
Ich beschäftige mich erst seit wenigen Tagen mit PL/SQL und es bereitet mir leider Kopfschmerzen.
Diesbezüglich würde ich euch bei meinem Problem um ein wenig Hilfe bitten.
Meine Problemstellung:
2 Tabellen:
Schueler:
S_SCHNR S_K_KLASSE S_NAME S_VORNAME S_GEBDAT S_ADRESSE
Lehrer:
L_ID L_NAME L_VORNAME L_L_CHEF L_GEBDAT L_GEHALT
Nun muss ich eine Prozedur erstellen bei welcher man den Klassennamen (S_K_KLASSE) mitangibt wo dann die sämtliche Vornamen und Nachnamen aller Lehrer und der Schüler welche in der von der Prozedur übergeben Klasse sind, darstellt.
----------------
Meine Hoffnung liegt nicht dabei, hier eine Lösung präsentiert zu bekommen (was aber auch sehr toll wäre), vielmehr würde ich gerne verstehen auf welche Sachen bei solch einer Problemstellung zu achten ist um dies besser verstehen zu können.
Ich habe das Ganze versucht folgendermaßen zu lösen, jedoch ist dies mit Scherheit ein falscher Ansatz welcher viele Fehler beinhaltet.
set serveroutput on
CREATE OR REPLACE PROCEDURE p_liste (p_klasse IN varchar2) IS
DECLARE
zeile number boolean := false;
BEGIN
DECLARE
CURSOR emp_cur
SELECT abc.vorname, abc.nachname
FROM
(
SELECT l_vorname vorname, l_name nachname
FROM lehrer
UNION
SELECT s_vorname vorname, s_name nachname
FROM schueler WHERE s_k_klasse='03TA'
) abc
ORDER BY abc.nachname ASC;
my_name abc%ROWTYPE;
-----------------------------------
BEGIN
OPEN emp_cur;
LOOP
FETCH emp_cur INTO my_name;
EXIT WHEN emp_cur%NOTFOUND;
if zeile == FALSE THEN
dbms_output.put(my_name.vorname);
dbms_output.put(' '|| my_name.nachname);
dbms_output.put(' ');
zeile := true;
ELSE
if zeile == TRUE THEN
dbms_output.put(my_name.vorname);
dbms_output.put(' '|| my_name.nachname);
dbms_output.put_line('');
zeile := false;
END LOOP
CLOSE emp_cur;
END
-----------------------
END;
Dabei sollte beim Aufruf der Prozdur folgende Ausgabe erscheinen:
Max Mustermann Peter Bauer
Michael Jürgens Jürgen Thaler
...
Für ein paar hilfreiche Tipps, wäre ich Euch mit herzlichem Dank verbunden.
lg,
Blagi