Monday, 24 May 2021

RDS-26

 Consider the following entities and their relationships.       

Project (pno, pname, start_date, budget, status)

 Department (dno, dname, HOD, loc)

The relationship between Project and Department is Many to One.

Constraint: Primary key.Project Status

Constraints:     C – Completed,P - Progressive, I – Incomplete

Create a RDB in 3NF and write PL/SQL blocks in Oracle for the following:

1)Write a procedure to display the name of HOD who has completed maximum project.

 

SQL> set serveroutput on

SQL> create or replace procedure p1(n in varchar) as cursor c1 is  select pname,dname,HOD from Department,Project where Department.dno=Project.dno and pname=(select max(pname)from Department,Project where Department.dno=Project.dno)group by HOD ;

  2  c c1 %rowtype;

  3  begin

  4  open c1;

  5  dbms_output.put_line('pname'||''||'dname'||''||'HOD');

  6   loop

  7   fetch c1 into c;

  8  exit when c1 %notfound;

  9   if(c.pname=n)then

 10  dbms_output.put_line(c.pname ||''||c.dname||''||C.HOD);

 11   end if;

 12   end loop;

 13   close c1;

 14    end;

 15  /

2)Write a trigger which will fire before insert or update on project having budget less than or equal to zero. (Raise user defined exception and give appropriate message)

SQL>  set serveroutput on

SQL>  create or replace trigger t4 before insert or update on project

  2   for each row

  3   begin

  4   if(:new.budget<=0)then

  5   raise_application_error(-20001,'budget>0');

  6   end if;

  7   end;

  8   /

 

Trigger created.