PL SQL
PL SQL
-- Read Person
CREATE OR REPLACE PROCEDURE readPerson (p_id VARCHAR2) AS
personObj PersonType;
BEGIN
SELECT * INTO personObj FROM PersonTable WHERE id = p_id;
DBMS_OUTPUT.PUT_LINE('ID: ' || personObj.id);
DBMS_OUTPUT.PUT_LINE('Name: ' || personObj.name);
DBMS_OUTPUT.PUT_LINE('Age: ' || personObj.age);
END readPerson;
/
-- Update Person
CREATE OR REPLACE PROCEDURE updatePersonAge (
p_id VARCHAR2,
p_new_age NUMBER
) AS
BEGIN
UPDATE PersonTable SET age = p_new_age WHERE id = p_id;
END updatePersonAge;
/
-- Delete Person
CREATE OR REPLACE PROCEDURE deletePerson (p_id VARCHAR2) AS
BEGIN
DELETE FROM PersonTable WHERE id = p_id;
END deletePerson;
/
-- CRUD procedures for Student
-- Create Student
CREATE OR REPLACE PROCEDURE createStudent (
s_id VARCHAR2,
s_name VARCHAR2,
s_age NUMBER,
s_grade NUMBER
) AS
BEGIN
INSERT INTO StudentTable VALUES (StudentType(s_id, s_name, s_age, s_grade));
END createStudent;
/
-- Read Student
CREATE OR REPLACE PROCEDURE readStudent (s_id VARCHAR2) AS
studentObj StudentType;
BEGIN
SELECT * INTO studentObj FROM StudentTable WHERE id = s_id;
DBMS_OUTPUT.PUT_LINE('ID: ' || studentObj.id);
DBMS_OUTPUT.PUT_LINE('Name: ' || studentObj.name);
DBMS_OUTPUT.PUT_LINE('Age: ' || studentObj.age);
DBMS_OUTPUT.PUT_LINE('Grade: ' || studentObj.grade);
END readStudent;
/
-- Update Student
CREATE OR REPLACE PROCEDURE updateStudentGrade (
s_id VARCHAR2,
s_new_grade NUMBER
) AS
BEGIN
UPDATE StudentTable SET grade = s_new_grade WHERE id = s_id;
END updateStudentGrade;
/
-- Delete Student
CREATE OR REPLACE PROCEDURE deleteStudent (s_id VARCHAR2) AS
BEGIN
DELETE FROM StudentTable WHERE id = s_id;
END deleteStudent;
/
-- Read Teacher
CREATE OR REPLACE PROCEDURE readTeacher (t_id VARCHAR2) AS
teacherObj TeacherType;
BEGIN
SELECT * INTO teacherObj FROM TeacherTable WHERE id = t_id;
DBMS_OUTPUT.PUT_LINE('ID: ' || teacherObj.id);
DBMS_OUTPUT.PUT_LINE('Name: ' || teacherObj.name);
DBMS_OUTPUT.PUT_LINE('Age: ' || teacherObj.age);
DBMS_OUTPUT.PUT_LINE('Subject Taught: ' || teacherObj.subjectTaught);
DBMS_OUTPUT.PUT_LINE('Years of Experience: ' || teacherObj.yearsOfExperience);
END readTeacher;
/
-- Update Teacher
CREATE OR REPLACE PROCEDURE updateTeacherExperience (
t_id VARCHAR2,
t_new_experience NUMBER
) AS
BEGIN
UPDATE TeacherTable SET yearsOfExperience = t_new_experience WHERE id = t_id;
END updateTeacherExperience;
/
-- Delete Teacher
CREATE OR REPLACE PROCEDURE deleteTeacher (t_id VARCHAR2) AS
BEGIN
DELETE FROM TeacherTable WHERE id = t_id;
END deleteTeacher;
/
-- Read Enrollment
CREATE OR REPLACE PROCEDURE readEnrollment AS
CURSOR enrollment_cursor IS
SELECT *
FROM EnrollmentTable
ORDER BY student.id, teacher.id; -- Ordering by student and teacher IDs
studentObj StudentType;
teacherObj TeacherType;
BEGIN
FOR enrollment_rec IN enrollment_cursor LOOP
studentObj := TREAT(enrollment_rec.student AS StudentType);
teacherObj := TREAT(enrollment_rec.teacher AS TeacherType);
DBMS_OUTPUT.PUT_LINE('Student ID: ' || studentObj.id);
DBMS_OUTPUT.PUT_LINE('Student Name: ' || studentObj.name);
DBMS_OUTPUT.PUT_LINE('Student Age: ' || studentObj.age);
DBMS_OUTPUT.PUT_LINE('Student Grade: ' || studentObj.grade);
-- Delete Enrollment
CREATE OR REPLACE PROCEDURE deleteEnrollment (enrollment_id NUMBER) AS
BEGIN
DELETE FROM EnrollmentTable WHERE rownum = 1;
END deleteEnrollment;
/