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;
|
||||||
|
/
|
||||||
59
scripts_12.sql
Normal file
59
scripts_12.sql
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
-- section 1
|
||||||
|
CREATE OR REPLACE PACKAGE 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
|
||||||
|
);
|
||||||
|
|
||||||
|
FUNCTION id_is_good
|
||||||
|
(i_student_id IN student.student_id%TYPE)
|
||||||
|
RETURN BOOLEAN;
|
||||||
|
END manage_students;
|
||||||
|
/
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
-- section 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;
|
||||||
Reference in New Issue
Block a user