Advertisement
Guest User

Untitled

a guest
May 20th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. CREATE OR REPLACE PACKAGE school_api AS
  2. v_current_date DATE;
  3. PROCEDURE discount_cost;
  4. PROCEDURE remove_student (
  5. s_id student.student_id%TYPE,
  6. p_ri VARCHAR2 DEFAULT 'R'
  7. );
  8. FUNCTION new_instructor_id RETURN instructor.instructor_id%TYPE;
  9. END school_api;
  10. /
  11.  
  12. CREATE OR REPLACE PACKAGE BODY school_api AS
  13.  
  14. PROCEDURE remove_student (
  15. s_id student.student_id%TYPE,
  16. p_ri VARCHAR2 DEFAULT 'R'
  17. ) IS
  18. BEGIN
  19. IF p_ri = 'R' THEN
  20. DELETE FROM student
  21. WHERE
  22. student_id = s_id;
  23.  
  24. ELSIF p_ri = 'C' THEN
  25. -- clean grade
  26. DELETE FROM grade
  27. WHERE
  28. student_id = s_id;
  29. -- clean enrollment
  30.  
  31. DELETE FROM enrollment
  32. WHERE
  33. student_id = s_id;
  34. -- clean student
  35.  
  36. DELETE FROM student
  37. WHERE
  38. student_id = s_id;
  39.  
  40. END IF;
  41. END remove_student;
  42.  
  43. PROCEDURE discount_cost IS
  44.  
  45. CURSOR c_group_discount IS
  46. SELECT DISTINCT
  47. s.course_no,
  48. c.description
  49. FROM
  50. section s,
  51. enrollment e,
  52. course c
  53. WHERE
  54. s.section_id = e.section_id
  55. GROUP BY
  56. s.course_no,
  57. c.description,
  58. e.section_id,
  59. s.section_id
  60. HAVING
  61. COUNT(*) >= 8;
  62.  
  63. BEGIN
  64. FOR r_group_discount IN c_group_discount LOOP
  65. UPDATE course
  66. SET cost = cost *.95
  67. WHERE
  68. course_no = r_group_discount.course_no;
  69.  
  70. dbms_output.put_line('A 5% discount has been given to'
  71. || r_group_discount.course_no
  72. || r_group_discount.description);
  73. END LOOP;
  74. END discount_cost;
  75.  
  76. FUNCTION new_instructor_id RETURN instructor.instructor_id%TYPE IS
  77. v_new_instid instructor.instructor_id%TYPE;
  78. BEGIN
  79. SELECT
  80. instructor_id_seq.NEXTVAL
  81. INTO v_new_instid
  82. FROM
  83. dual;
  84.  
  85. RETURN v_new_instid;
  86. EXCEPTION
  87. WHEN OTHERS THEN
  88. dbms_output.put_line('Error!');
  89. END new_instructor_id;
  90.  
  91. END school_api;
  92. /
  93.  
  94. SET SERVEROUTPUT ON
  95.  
  96. DECLARE
  97. v_student_id NUMBER := &v_student_id;
  98. v_pr_i VARCHAR2(1) := '&v_pr_i';
  99. BEGIN
  100. school_api.remove_student(v_student_id, v_pr_i);
  101. dbms_output.put_line(v_student_id);
  102. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement