Advertisement
Aniket_Goku

assi Q1

Nov 6th, 2020 (edited)
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 6.75 KB | None | 0 0
  1. -RDBMS
  2.     --      Book (Bookld, BookName, Author, Publisher)
  3.     --      Student (Studentld, StudentName)
  4.     --      Booklssue (Booklssueld, Bookld, Studentld, IssueDate, ReturnDate, BookStatus)
  5.     --      Write a PL/SQL code block:
  6. --          1. Accept student name and display all books issued by student.
  7. --          2. Display all the students' name who don't return book on return date.
  8. --          3. Display all the students who don't issue book since last 3 months.
  9. --          4. Display all the students who issue 3 books.
  10.  
  11. --create
  12. --      Book (Bookld, BookName, Author, Publisher)
  13. CREATE TABLE book
  14. (
  15.     bookid   NUMBER primary key,
  16.     bookname VARCHAR(20),
  17.     author VARCHAR(20),
  18.     publisher VARCHAR(20)
  19. );
  20. --      Student (Studentld, StudentName)
  21. CREATE  TABLE student
  22. (
  23.     studentid  NUMBER primary key,
  24.     studentname VARCHAR(20)
  25. );
  26.     --      Booklssue (Booklssueld, Bookld, Studentld, IssueDate, ReturnDate, BookStatus)
  27.     CREATE TABLE bookissue
  28.     (
  29.         bookissueid NUMBER,
  30.         bookid NUMBER ,
  31.         studentid NUMBER,
  32.         issuedate DATE,
  33.         returndate DATE,
  34.         bookstatus VARCHAR(20),
  35.         constraints  "fk_bookid"  
  36.         foreign key (bookid)
  37.         references book(bookid)
  38.         ON DELETE  cascade,
  39.         constraints "fk_studentid"
  40.         foreign key(studentid)
  41.         references student(studentid)
  42.         ON DELETE cascade
  43.         );
  44.    
  45.     -- Insert
  46. ---     Book (Bookld, BookName, Author, Publisher)
  47. INSERT INTO book VALUES(101,'c++','l.k.advani','surya');
  48. INSERT INTO book VALUES(102,'bootstrap4','h.r.mehta','nb');
  49. INSERT INTO book VALUES(103,'php','s.rmanujam','aware');
  50. INSERT INTO book VALUES(104,'oracle','tiger','shroff');
  51. INSERT INTO book VALUES(105,'ruby','kapil','sharma');
  52.  
  53. --      Student (Studentld, StudentName)
  54. INSERT INTO student VALUES(1,'Aniket');
  55. INSERT INTO student VALUES(2,'Krunal');
  56. INSERT INTO student VALUES(3,'Pritesh');
  57. INSERT INTO student VALUES(4,'Jay');
  58. INSERT INTO student VALUES(5,'Nikul');
  59. INSERT INTO student VALUES(6,'Aadesh');
  60. INSERT INTO student VALUES(7,'Aditi');
  61. INSERT INTO student VALUES(8,'shradha');
  62. INSERT INTO student VALUES(9,'Manav');
  63. INSERT INTO student VALUES(10,'Darshan');
  64. INSERT INTO student VALUES(11,'Dhruv');
  65. INSERT INTO student VALUES(12,'Anikt');
  66. INSERT INTO student VALUES(13,'Ajay');
  67. INSERT INTO student VALUES(14,'Bhuvan');
  68. INSERT INTO student VALUES(15,'Aashish');
  69.  
  70. --      Booklssue (Booklssueld, Bookld, Studentld, IssueDate, ReturnDate, BookStatus)
  71. INSERT INTO bookissue VALUES(1001,101,1,DATE '2019-09-22',DATE  '2019-10-02','recieved');
  72. INSERT INTO bookissue VALUES(1002,103,2, DATE '2020-02-22',DATE '2020-03-01','not_recieved');
  73. INSERT INTO bookissue VALUES(1003,102,3, DATE '2020-02-21',DATE '2020-02-29','recieved');
  74. INSERT INTO bookissue VALUES(1004,104,1, DATE '2020-03-02',DATE '2020-03-29','recieved');
  75. INSERT INTO bookissue VALUES(1005,105,4, DATE '2020-03-10',DATE '2020-03-19','not_recieved');
  76. INSERT INTO bookissue VALUES(1006,105,1, DATE '2020-04-19',DATE '2020-04-29','not_recieved');
  77. INSERT INTO bookissue VALUES( 1007,103,13, DATE '2020-01-19',DATE '2020-03-19','recieved');
  78. INSERT INTO bookissue VALUES(1008,101,13, DATE '2020-03-11',DATE '2020-04-21','recieved');
  79. INSERT INTO bookissue VALUES( 1009,101,7, DATE '2020-02-11',DATE '2020-02-21','recieved');
  80. INSERT INTO bookissue VALUES(1010,105,7, DATE '2020-04-19',DATE '2020-04-21','not_recieved');
  81. INSERT INTO bookissue VALUES(1011,103,14, DATE '2020-04-19',DATE '2020-05-02','recieved');
  82. INSERT INTO bookissue VALUES(1012,104,14, DATE '2020-05-21',DATE '2020-05-25','not_recieved');
  83. INSERT INTO bookissue VALUES(1013,101,15, DATE '2020-06-01',DATE '2020-06-10','recieved');
  84. INSERT INTO bookissue VALUES(1014,103,5, DATE '2020-05-16',DATE '2020-06-01','recieved');
  85. INSERT INTO bookissue VALUES(1015,102,7, DATE '2020-04-22',DATE '2020-04-13','recieved');
  86.  
  87. //Q1
  88. --1. Accept student name and display all books issued by student
  89. DECLARE
  90. name VARCHAR(20):='&name';
  91. sname VARCHAR(20);
  92. bname VARCHAR(20);
  93. CURSOR c1 IS SELECT studentname,bookname
  94.     FROM book  ,student
  95.     WHERE  bookname IN (SELECT bookname FROM book WHERE bookid IN (SELECT bookid FROM bookissue WHERE studentid IN(SELECT studentid FROM student WHERE studentname =name)))
  96.     AND studentname=name;
  97. BEGIN
  98.    
  99.     OPEN c1;
  100.     LOOP
  101.     FETCH c1 INTO sname,bname;
  102.         EXIT WHEN c1%notfound;
  103.     DBMS_OUTPUT.put_line(sname||' === >'||bname);
  104.     END LOOP;
  105.     CLOSE c1;
  106. END;
  107. /
  108. --Q2
  109. --2. Display all the students' name who don't return book on return date.
  110. DECLARE
  111. sname VARCHAR(20);
  112. CURSOR c2 IS
  113. SELECT studentname FROM student WHERE studentid IN(SELECT studentid FROM bookissue WHERE bookstatus='not_recieved');
  114. BEGIN
  115.    
  116.     OPEN c2;
  117.     LOOP
  118.     FETCH c2 INTO sname;
  119.     EXIT WHEN c2%notfound;
  120.         DBMS_OUTPUT.put_line(  ' * '||sname );
  121.     END LOOP;
  122.     CLOSE c2;
  123. END;
  124. /
  125.  
  126. ----Q3
  127. --3. Display all the students who don't issue book since last 3 months.
  128. DECLARE
  129. sname VARCHAR(20);
  130. CURSOR c3 IS
  131. SELECT studentname
  132. FROM student
  133.  WHERE studentid IN (SELECT studentid
  134.                                     FROM bookissue
  135.                                     WHERE  (TO_CHAR(SYSDATE,'mm')-TO_CHAR(issuedate,'mm'))>3    )
  136. ORDER BY studentname;                                  
  137.  BEGIN
  138.      OPEN c3;
  139.      LOOP
  140.      FETCH c3 INTO sname;
  141.      EXIT WHEN c3%notfound;
  142.         DBMS_OUTPUT.put_line('* ' || sname);
  143.      END LOOP;
  144.     CLOSE c3;
  145. END;
  146. --q4
  147. --          4. Display all the students who issue 3 books.
  148. DECLARE
  149. sname VARCHAR(20);
  150. CURSOR c4 IS
  151. SELECT StudentName AS"3 books issued" FROM student WHERE studentid IN(SELECT studentid FROM bookissue   GROUP BY studentid HAVING COUNT(bookid)=3 ) ;
  152. BEGIN
  153.         OPEN c4;
  154.         LOOP
  155.             FETCH c4 INTO sname;
  156.             EXIT WHEN c4%notfound;
  157.             DBMS_OUTPUT.put_line('=> '|| sname);
  158.         END LOOP;
  159.         CLOSE c4;
  160. END;
  161. /
  162.  
  163.  
  164.  
  165.  
  166. --trigger
  167.  
  168. CREATE OR REPLACE  TRIGGER t1
  169. before INSERT OR UPDATE OR DELETE ON bookissue
  170. FOR each ROW
  171. DECLARE
  172. oprat VARCHAR(10);
  173. BEGIN
  174. IF TO_CHAR(SYSDATE,'d')=7 THEN
  175.            
  176.                 IF inserting THEN
  177.                     oprat:='Insert';
  178.                 ELSIF deleting THEN
  179.                     oprat:='Delete';
  180.                 ELSIF updating THEN
  181.                     oprat:='Update';
  182.                 END IF;
  183.                 raise_application_error(-20002,oprat ||'is only possible in working hour');
  184.                
  185.                
  186.     END IF;
  187.     IF TO_CHAR(SYSDATE,'HH24')<8 OR TO_CHAR(SYSDATE,'HH24')>16 THEN
  188.                
  189.                 IF inserting THEN
  190.                     oprat:='Insert';
  191.                 ELSIF deleting THEN
  192.                     oprat:='Delete';
  193.                 ELSIF updating THEN
  194.                     oprat:='Update';
  195.                 END IF;
  196.                 raise_application_error(-20001,oprat ||'is only possible in working hour');
  197.            
  198.     END IF;
  199. END t1;
  200. SELECT TO_CHAR(SYSDATE,'HH24') FROM dual;
  201. DELETE FROM bookissue WHERE bookissueid=1015;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement