added Üz 12
This commit is contained in:
204
Uebungszettel_12.sql
Normal file
204
Uebungszettel_12.sql
Normal file
@@ -0,0 +1,204 @@
|
||||
--Aufgabe 12.1
|
||||
CREATE OR REPLACE PACKAGE manage_students
|
||||
AS
|
||||
v_current_date DATE;
|
||||
|
||||
PROCEDURE find_sname
|
||||
(i_student_id IN student.student_id%TYPE,
|
||||
o_first_name OUT student.first_name%TYPE,
|
||||
o_last_name OUT student.last_name%TYPE
|
||||
);
|
||||
|
||||
PROCEDURE display_student_count;
|
||||
|
||||
FUNCTION id_is_good
|
||||
(i_student_id IN student.student_id%TYPE)
|
||||
RETURN BOOLEAN;
|
||||
END manage_students;
|
||||
/
|
||||
-- a) Es wird eine Package SPECIFICATION gemacht.
|
||||
|
||||
DECLARE
|
||||
v_first_name student.first_name%TYPE;
|
||||
v_last_name student.last_name%TYPE;
|
||||
BEGIN
|
||||
manage_students.find_sname(125, v_first_name, v_last_name);
|
||||
DBMS_OUTPUT.PUT_LINE(v_first_name||' '||v_last_name);
|
||||
END;
|
||||
/
|
||||
-- b) Es kommt ein Error da noch kein Body für manage_students gemacht wurde.
|
||||
|
||||
|
||||
--Aufgabe 12.2
|
||||
CREATE OR REPLACE PACKAGE BODY manage_students
|
||||
AS
|
||||
PROCEDURE find_sname
|
||||
(i_student_id IN student.student_id%TYPE,
|
||||
o_first_name OUT student.first_name%TYPE,
|
||||
o_last_name OUT student.last_name%TYPE)
|
||||
IS
|
||||
v_student_id student.student_id%TYPE;
|
||||
BEGIN
|
||||
SELECT first_name, last_name
|
||||
INTO o_first_name, o_last_name
|
||||
FROM student
|
||||
WHERE student_id = i_student_id;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Error in finding student_id: '||v_student_id);
|
||||
END find_sname;
|
||||
|
||||
FUNCTION id_is_good
|
||||
(i_student_id IN student.student_id%TYPE)
|
||||
RETURN BOOLEAN
|
||||
IS
|
||||
v_id_cnt number;
|
||||
BEGIN
|
||||
SELECT COUNT(*)
|
||||
INTO v_id_cnt
|
||||
FROM student
|
||||
WHERE student_id = i_student_id;
|
||||
|
||||
RETURN 1 = v_id_cnt;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
RETURN FALSE;
|
||||
END id_is_good;
|
||||
END manage_students;
|
||||
/
|
||||
|
||||
-- a) der Body für die vorherige SPECIFICATION manage_students wird erstellt.
|
||||
|
||||
--b)
|
||||
DECLARE
|
||||
o_first_name student.first_name%TYPE;
|
||||
o_last_name student.last_name%TYPE;
|
||||
v_return_value BOOLEAN;
|
||||
BEGIN
|
||||
manage_students.find_sname(5, o_first_name, o_last_name);
|
||||
v_return_value := manage_students.id_is_good(101);
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
--Aufgabe 12.3
|
||||
CREATE OR REPLACE PACKAGE BODY manage_students
|
||||
AS
|
||||
PROCEDURE find_sname
|
||||
(i_student_id IN student.student_id%TYPE,
|
||||
o_first_name OUT student.first_name%TYPE,
|
||||
o_last_name OUT student.last_name%TYPE)
|
||||
IS
|
||||
v_student_id student.student_id%TYPE;
|
||||
BEGIN
|
||||
SELECT first_name, last_name
|
||||
INTO o_first_name, o_last_name
|
||||
FROM student
|
||||
WHERE student_id = i_student_id;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Error in finding student_id: '||v_student_id);
|
||||
END find_sname;
|
||||
|
||||
FUNCTION id_is_good
|
||||
(i_student_id IN student.student_id%TYPE)
|
||||
RETURN BOOLEAN
|
||||
IS
|
||||
v_id_cnt number;
|
||||
BEGIN
|
||||
SELECT COUNT(*)
|
||||
INTO v_id_cnt
|
||||
FROM student
|
||||
WHERE student_id = i_student_id;
|
||||
|
||||
RETURN 1 = v_id_cnt;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
RETURN FALSE;
|
||||
END id_is_good;
|
||||
|
||||
FUNCTION get_num_students
|
||||
RETURN NUMBER
|
||||
IS
|
||||
v_id_cnt number;
|
||||
BEGIN
|
||||
SELECT COUNT(*)
|
||||
INTO v_id_cnt
|
||||
FROM student;
|
||||
|
||||
RETURN v_id_cnt;
|
||||
END get_num_students;
|
||||
|
||||
PROCEDURE display_student_count
|
||||
IS
|
||||
BEGIN
|
||||
DBMS_OUTPUT.PUT_LINE(get_num_students);
|
||||
END display_student_count;
|
||||
|
||||
END manage_students;
|
||||
/
|
||||
|
||||
BEGIN
|
||||
manage_students.display_student_count;
|
||||
END;
|
||||
/
|
||||
|
||||
--Aufgabe 12.4
|
||||
CREATE OR REPLACE PACKAGE BODY manage_students
|
||||
AS
|
||||
PROCEDURE find_sname
|
||||
(i_student_id IN student.student_id%TYPE,
|
||||
o_first_name OUT student.first_name%TYPE,
|
||||
o_last_name OUT student.last_name%TYPE)
|
||||
IS
|
||||
v_student_id student.student_id%TYPE;
|
||||
BEGIN
|
||||
SELECT first_name, last_name
|
||||
INTO o_first_name, o_last_name
|
||||
FROM student
|
||||
WHERE student_id = i_student_id;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Error in finding student_id: '||v_student_id);
|
||||
END find_sname;
|
||||
|
||||
FUNCTION id_is_good
|
||||
(i_student_id IN student.student_id%TYPE)
|
||||
RETURN BOOLEAN
|
||||
IS
|
||||
v_id_cnt number;
|
||||
BEGIN
|
||||
SELECT COUNT(*)
|
||||
INTO v_id_cnt
|
||||
FROM student
|
||||
WHERE student_id = i_student_id;
|
||||
|
||||
RETURN 1 = v_id_cnt;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
RETURN FALSE;
|
||||
END id_is_good;
|
||||
|
||||
FUNCTION get_num_students
|
||||
RETURN NUMBER
|
||||
IS
|
||||
v_id_cnt number;
|
||||
BEGIN
|
||||
SELECT COUNT(*)
|
||||
INTO v_id_cnt
|
||||
FROM student;
|
||||
|
||||
RETURN v_id_cnt;
|
||||
END get_num_students;
|
||||
|
||||
PROCEDURE display_student_count
|
||||
IS
|
||||
BEGIN
|
||||
DBMS_OUTPUT.PUT_LINE(get_num_students);
|
||||
END display_student_count;
|
||||
|
||||
BEGIN
|
||||
v_current_date := trunc(sysdate, 'DD');
|
||||
|
||||
END manage_students;
|
||||
/
|
||||
Reference in New Issue
Block a user