added Übungszettel 11
This commit is contained in:
128
Uebungszettel_6.sql
Normal file
128
Uebungszettel_6.sql
Normal 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;
|
||||
Reference in New Issue
Block a user