204 lines
4.2 KiB
SQL
204 lines
4.2 KiB
SQL
--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;
|
|
/ |