added Übungszettel 11

This commit is contained in:
2025-02-13 14:58:45 +01:00
parent 25bf599c6c
commit 66c3899154
16 changed files with 4976 additions and 2 deletions

128
Uebungszettel_6.sql Normal file
View File

@@ -0,0 +1,128 @@
-- Aufgabe 6.1
DECLARE
vr_zip ZIPCODE%ROWTYPE;
BEGIN
SELECT *
INTO vr_zip
FROM zipcode
WHERE rownum < 2;
DBMS_OUTPUT.PUT_LINE('City: '||vr_zip.city);
DBMS_OUTPUT.PUT_LINE('State: '||vr_zip.state);
DBMS_OUTPUT.PUT_LINE('Zip: '||vr_zip.zip);
END;
/
-- Es wird die Stadt, der State und die Postleitzahl vom ersten Datensatz in der zipcode Tabelle angezeigt.
-- Aufgabe 6.2
DECLARE
CURSOR c_zip IS
SELECT *
FROM zipcode;
vr_zip ZIPCODE%ROWTYPE;
BEGIN
OPEN c_zip;
LOOP
FETCH c_zip INTO vr_zip;
EXIT WHEN c_zip%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(vr_zip.zip || vr_zip.city || vr_zip.state);
END LOOP;
CLOSE c_zip;
END;
/
-- Aufgabe 6.3
DECLARE
CURSOR c_student_name IS
SELECT *
FROM STUDENT
WHERE rownum <= 5;
vr_student STUDENT%ROWTYPE;
BEGIN
OPEN c_student_name;
LOOP
FETCH c_student_name INTO vr_student;
EXIT WHEN c_student_name%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Student name: ' || vr_student.FIRST_NAME || ' ' || vr_student.LAST_NAME);
END LOOP;
CLOSE c_student_name;
END;
/
-- Aufgabe 6.4
-- EXIT WHEN c_student%NOTFOUND;
-- DBMS_OUTPUT.PUT_LINE('STUDENT ID : '||v_sid);
-- END LOOP;
-- CLOSE c_student;
-- EXCEPTION
-- WHEN OTHERS THEN
-- IF c_student%ISOPEN THEN
-- CLOSE c_student;
-- END IF;
-- END;
--/
-- a): %NOTFOUND -> Prüft ob keine weiteren Einträge gefunden werden. %ISOPEN -> Prüft ob akutell noch der Cursor offen ist.
-- b):
DECLARE
CURSOR c_student IS
SELECT student_id
FROM student;
v_sid student.student_id%TYPE;
BEGIN
OPEN c_student;
LOOP
FETCH c_student INTO v_sid;
EXIT WHEN c_student%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Student Id: '||v_sid);
END LOOP;
CLOSE c_student;
EXCEPTION
WHEN OTHERS THEN
IF c_student%ISOPEN THEN
CLOSE c_student;
END IF;
RAISE;
END;
/
-- Aufgabe 6.5
DECLARE
CURSOR c_student IS
SELECT student_id, first_name, last_name, (SELECT COUNT(*) FROM enrollment e WHERE e.student_id = s.student_id) AS class_count
FROM student s
WHERE student_id < 110;
vr_student c_student%ROWTYPE;
BEGIN
OPEN c_student;
LOOP
FETCH c_student INTO vr_student;
EXIT WHEN c_student%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Student INFO: ID ' || vr_student.student_id || ' is ' || vr_student.first_name || ' ' || vr_student.last_name || ' is enrolled in ' || vr_student.class_count || ' classes.');
END LOOP;
CLOSE c_student;
END;
/
-- Aufgabe 6.6
DECLARE
CURSOR c_group_discount IS
SELECT co.course_no, co.cost
FROM course co
WHERE (SELECT COUNT(*) FROM enrollment e
JOIN section s ON e.section_id = s.section_id
WHERE s.course_no = co.course_no) >= 8;
BEGIN
FOR r_group_discount IN c_group_discount LOOP
UPDATE course
SET cost = cost * 0.95
WHERE course_no = r_group_discount.course_no;
END LOOP;
END;
/
SELECT 'Course No: ' || course_no || ', Cost: ' || cost FROM Course;