Advertisement
Guest User

Untitled

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