Friday, 20 December 2019

RDS-5


Slip 5
Consider the following entities and their relationships.       
Library(Lno, Lname, Location, Librarian, no_of_books)
Book(Bid, Bname, Author_Name, Price, publication)
Relation between Library and Book is one to many. Constraint: Primary key, Price should not be null.
Create a RDB in 3NF and write PL/SQL blocks in Oracle for the following:

SQL> create table library(l_no int primary key,l_name varchar(20),location varchar(20),librarian varchar(20),no_of_book int);
SQL> create table books(b_id int primary key,b_name varchar(20),author_name varchar(20),price int,publication varchar(20),l_no int);
SQL> insert into library values(1,'francis','pune','riya','10');
SQL> insert into books values(1,'wonderland','alice','500','nirali',1);

1)Write a function which will accept publication name from user and display total price of books of that publication.
SQL> set serveroutput on;
SQL> create or replace function fun1(pn in varchar) return number as pm number;
  2  begin
  3  select sum(books.price) into pm from library,books where library.l_no=books.l_no and publication=’vision’;
  4  if sql %found then
  5  return(pm);
  6  else
  7  return null;
  8  end if;
  9  end;
 10  /
Function created.
SQL> begin
  2  dbms_output.put_line('price-'||fun1('vision'));
  3  end;
  4  /    

2)Write a cursor which will display library wise book details.(Use Parameterized Cursor)

SQL> set serveroutput on

SQL> declare

  2    cursor c1(yyyy  Library.l_name %type)is select l_name,b_name from Library,Book  where Library.l_no= Book.l_no order by l_name;

  3    c c1%rowtype;

  4    begin

  5    open c1('&l_name ');

  6    loop

  7    fetch c1 into c;

  8    exit when c1%notfound;

  9    dbms_output.put_line(c.l_name||''||c.b_name);

 10   end loop;

 11    close c1;

 12    end;

 13 

 14  /