Anda di halaman 1dari 41

RDBMS ASSIGNMENTS

Q.1 Consider the following entities and their relationship.


DONAR(DONAR_NO,DONAR_NAME,CITY)
BLD_DON_DTL(BD_NO,BLOOD_GROUP,QTY,DT_OF_COLL)
Relationship between Donar and Blood_donation_detail one-to-many.
Constraints:- primary key,foreign key,donar_name should not be
null,blood group can be A+,A-,AB+,AB+,O+,O-.
Create a RDB in 3NF and write PL/SQL blocks in oracle for the
following:

CREATE TABLE DONOR1


(
DONOR_NO NUMBER(5)PRIMARY KEY,
DONOR_NAME VARCHAR(20)NOT NULL,
CITY VARCHAR(20)
);

INSERT INTO DONOR1 VALUES(11,'RAHUL','NAGAR');


INSERT INTO DONOR1 VALUES(12,'AMIT','NAGPUR');
INSERT INTO DONOR1 VALUES(13,'KISHOR','NAGAR');
INSERT INTO DONOR1 VALUES(15,'SURESH','MUMBAI');
INSERT INTO DONOR1 VALUES(16,'TUSHAR','SOLAPUR');
SELECT * FROM DONOR1

DONOR_NO DONOR_NAME CITY


11 RAHUL NAGAR
12 AMIT NAGPUR
13 KISHOR NAGAR
15 SURESH MUMBAI
16 TUSHAR SOLAPUR
CREATE TABLE BLD_DON_DTL1
(BD_NO NUMBER(10)PRIMARY KEY,
BLOOD_GROUP VARCHAR(15),
QTY NUMBER(3),
DT_OF_COLL NUMBER(3),
DONOR_NO NUMBER(10)REFERENCES DONOR1(DONOR_NO)
);

INSERT INTO BLD_DON_DTL1 VALUES(101,'A+',99,3,16);


INSERT INTO BLD_DON_DTL1 VALUES(102,'AB+',24,5,11);
INSERT INTO BLD_DON_DTL1 VALUES(103,'A-',123,2,12);
INSERT INTO BLD_DON_DTL1 VALUES(104,'O+',94,33,15);
INSERT INTO BLD_DON_DTL1 VALUES(105,'B+',231,5,13);

SELECT * FROM BLD_DON_DTL1;

BD_NO BLOOD_GROUP QTY DT_OF_COLL DONOR_NO


101 A+ 99 3 16
102 AB+ 24 5 11
103 A- 123 2 12
104 O+ 94 33 15
105 B+ 231 5 13

DECLARE
BLOOD_GROUP VARCHAR(15);
QTY NUMBER;
CURSOR B_BLOOD IS
SELECT BLOOD_GROUP,QTY FROM
BLD_DON_DTL1;
BEGIN
OPEN B_BLOOD;
LOOP
FETCH B_BLOOD INTO BLOOD_GROUP,QTY;
EXIT WHEN B_BLOOD%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(BLOOD_GROUP||' '||QTY);
END LOOP;
CLOSE B_BLOOD;
END;
/

OUTPUT:-
A+ 99
AB+ 24
A- 123
O+ 94
B+ 231

Statement processed.

CREATE OR REPLACE TRIGGER QTY_TRG1


BEFORE INSERT OR UPDATE ON BLD_DON_DTL1
FOR EACH ROW
WHEN(NEW.QTY<300)
BEGIN
RAISE_APPLICATION_ERROR('400','CANNOT INSERT ! QUANTITY OF BLOOD SHOULD
GRATER THEN 300ML');
END QTY_TRG1;
/
OUTPUT:-
Q.2 Consider the following entities and their relationships.
CLIENT(C_NO,C_NAME,C_ADDR,BIRTH_DATE)
POLICY_INFO(P_NO,P_NAME,MATURITY_AMT,PREM_AMT,POLICY_TERM)
Relationship between client and policy_info is many –to-many .
Constraints:primary key,foreign key,c_name and p_name should not be
null,policy_term should be greater than zero.
Create a RDB in 3NF.

CREATE TABLE CLIENT1


(C_NO NUMBER(10)PRIMARY KEY,
C_NAME VARCHAR(20)NOT NULL,
C_ADD VARCHAR(20),

BIRTH_DATE VARCHAR(25)
);
INSERT INTO CLIENT VALUES(11,'MEHUL','AHEMDABAD','21-DEC-1996');
INSERT INTO CLIENT VALUES(12,'HEMANT','VAMBORI','06-APR-1999');
INSERT INTO CLIENT VALUES(13,'NILESH','MUMBAI','25-JULY-1999');

INSERT INTO CLIENT VALUES(14,'AAYUSH','NAGAR','14-DEC-1999');


INSERT INTO CLIENT VALUES(15,'NIKUL','NAGAR','16-OCT-1996');
SELECT * FROM CLIENT;
OUTPUT:-

44170288286817
14106352553967
14144690751258
5

44183034646933

SELECT * FROM

21572909937200

21606912080381

21736625668766

C_NO C_NAME C_ADD BIRTH_DATE


11 MEHUL AHEMDABAD 21-DEC-1996
12 HEMANT VAMBORI 06-APR-1999
13 NILESH MUMBAI 25-JULY-1999
14 AAYUSH NAGAR 14-DEC-1999
15 NIKUL NAGAR 16-OCT-1996

CREATE TABLE POLICY_INFO2


(P_NO NUMBER(10)PRIMARY KEY,

P_NAME VARCHAR(15)NOT NULL,


MATURITY_AMT NUMBER(10),
PREM_AMT NUMBER(10),
POLICY_TERM VARCHAR(20)
);

INSERT INTO POLICY_INFO2 VALUES(101,'STAR_HELTH',38000,7600,'FIFTIN_YEAR');


INSERT INTO POLICY_INFO2 VALUES(102,'JIVAN_VIMA',76543,8756,'SIX_YEAR');
INSERT INTO POLICY_INFO2 VALUES(103,'MAXLIFE',67543,8976,'THREE_YEAR');
INSERT INTO POLICY_INFO2 VALUES(104,'GENIES',32456,98765,'FOUR_YEAR');
INSERT INTO POLICY_INFO2 VALUES(105,'MUTUAL_FUND',78656,98767,'TWENTY_YEAR');

P_NO P_NAME MATURITY_AMT PREM_AMT POLICY_TERM


101 STAR_HELTH 38000 7600 FIFTIN_YEAR
102 JIVAN_VIMA 76543 8756 SIX_YEAR
103 MAXLIFE 67543 8976 THREE_YEAR
104 GENIES 32456 98765 FOUR_YEAR
105 MUTUAL_FUND 78656 98767 TWENTY_YEAR

CREATE TABLE CLIENT_POLICY

(C_NO NUMBER(10) REFERENCES CLIENT(C_NO),


P_NO NUMBER(10) REFERENCES POLICY_INFO(P_NO)
);

INSERT INTO CLIENT_POLICY VALUES(11,105);


INSERT INTO CLIENT_POLICY VALUES(12,104);
INSERT INTO CLIENT_POLICY VALUES(13,103);
INSERT INTO CLIENT_POLICY VALUES(14,102);
INSERT INTO CLIENT_POLICY VALUES(15,101);

SELECT * FROM CLIENT_POLICY

44170288286817 5 44183034646933

SELECT * FROM C 21572909937200


14106352553967 14144690751258
21606912080381 21736625668766

C_NO P_NO
11 105
12 104
13 103
14 102
15 101

(A) Write a function which will return name of policy taken by minimum
number of clients.
CREATE OR REPLACE FUNCTION MIN_CLIENT
(CNO IN NUMBER)
RETURN VARCHAR

AS
PNAME VARCHAR(20);
BEGIN
SELECT P_NAME INTO PNAME FROM POLICY_INFO2
WHERE P_NAME=(SELECT MIN(C_NO) FROM CLIENT)AND CNO=CNO;

EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('NO SUCH RECORD FOUND');
END;
/

OUTPUT:-
Function created.

DECLARE
NAME VARCHAR2(20);

BEGIN
NAME:= MIN_CLIENT(12);
DBMS_OUTPUT.PUT_LINE('NAME OF POLICY WHICH IS MINIMUM TAKEN BY CLIENT:-
'||NAME);
END;
/
OUTPUT:-
NAME OF POLICY WHICH IS MINIMUM TAKEN BY CLIENT:- JIVAN VIMA

(B) Write a cursor which will display client wise policy details.
DECLARE
CNAME VARCHAR(20);
PNAME VARCHAR(20);
AMTM NUMBER;

AMTP NUMBER;
PTERM VARCHAR(20);
CURSOR P_CLIENT IS SELECT
C_NAME,P_NAME,MATURITY_AMT,PREM_AMT,POLICY_TERM
FROM CLIENT,POLICY_INFO2,CLIENT_POLICY
WHERE CLIENT_POLICY.C_NO=CLIENT.C_NO
AND CLIENT_POLICY.P_NO=POLICY_INFO2.P_NO

GROUP BY C_NAME,P_NAME,MATURITY_AMT,PREM_AMT,POLICY_TERM;
BEGIN
OPEN P_CLIENT;
DBMS_OUTPUT.PUT_LINE('-----------------DETAILS OF CLIENTS & THEIR POLICY-------------------
------');
DBMS_OUTPUT.PUT_LINE('CLIENT NAME | POLICY NAME | MATURITY AMOUNT |
PREMIUM AMOUNT | POLICY TERM');
LOOP

FETCH P_CLIENT INTO CNAME,PNAME,AMTM,AMTP,PTERM;


EXIT WHEN P_CLIENT%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('---------------------------------------------------------------------------------
----');
DBMS_OUTPUT.PUT_LINE(CNAME||' | '||PNAME||' | '||AMTM||' |
'||AMTP||' | '||PTERM);
END LOOP;
CLOSE P_CLIENT;

END;
/
OUTPUT:-
-----------------DETAILS OF CLIENTS & THEIR POLICY------------
-------------
CLIENT NAME | POLICY NAME | MATURITY AMOUNT |
PREMIUM AMOUNT | POLICY TERM
--------------------------------------------------------------
-----------------------
MEHUL | MUTUAL_FUND | 78656 |
98767 | TWENTY_YEAR
--------------------------------------------------------------
-----------------------
HEMANT | GENIES | 32456 |
98765 | FOUR_YEAR
--------------------------------------------------------------
-------------
NIKUL | STAR_HELTH | 38000 |
7600 | FIFTIN_YEAR
--------------------------------------------------------------
-----------------------
AAYUSH | JIVAN_VIMA | 76543 |
8756 | SIX_YEAR
--------------------------------------------------------------
-----------------------
NILESH | MAXLIFE | 67543 |
8976 | THREE_YEAR

Statement processed.
----------------------------------------------------------------------------------------------------------------
Q.3Consider the following entities and relationships.
COMPANY(C_NO,C_NAME,C_CITY,C_SHARE_VALUE)
PERSON(P_NO,P_NAME,P_CITY,P_PH_NO)
Relationship between company and person is many-to-many with
descriptive attribute no_of_shares.
Constraints:-primary key,foreign key,c_name and p_name should not
be null,no_of_shares should be greater than zero.
Create a RDB in 3NF.

CREATE TABLE COMPANY1


(C_NO NUMBER(5)PRIMARY KEY,
C_NAME VARCHAR(10)NOT NULL,
C_CITY VARCHAR(15),
C_SHARE_VALUE NUMBER(5)
);
INSERT INTO COMPANY1 VALUES(1,'BIRLA','PUNE',245);
INSERT INTO COMPANY1 VALUES(2,'L&T','AHMEDABAD',987);
INSERT INTO COMPANY1 VALUES(3,'INFOSYS','MUMBAI',756);
INSERT INTO COMPANY1 VALUES(4,'ROBOTIC','KERAL',643);

SELECT * FROM COMPANY1;

C_NO C_NAME C_CITY C_SHARE_VALUE


1 BIRLA PUNE 245
2 L&T AHMEDABAD 987
3 INFOSYS MUMBAI 756
4 ROBOTIC KERAL 643

CREATE TABLE PERSON


(P_NO NUMBER(5)PRIMARY KEY,
P_NAME VARCHAR(10)NOT NULL,
P_CITY VARCHAR(15),
P_PH_NO NUMBER(12)
);

INSERT INTO PERSON VALUES(101,'AMIT','RAJASTHAN',7645347654);


INSERT INTO PERSON VALUES(102,'BHAVESH','AHMEDABAD',7645786323);
INSERT INTO PERSON VALUES(103,'SUNIL','UP',8978654544);
INSERT INTO PERSON VALUES(104,'SMITH','MUMBAI',7678886544);

SELECT * FROM PERSON;

P_NO P_NAME P_CITY P_PH_NO


101 AMIT RAJASTHAN 7645347654
102 BHAVESH AHMEDABAD 7645786323
103 SUNIL UP 8978654544
104 SMITH MUMBAI 7678886544

CREATE TABLE COM_SHAREHOLDER


(C_NO NUMBER(5) REFERENCES COMPANY1(C_NO),
P_NO NUMBER(5) REFERENCES PERSON(P_NO)
);

INSERT INTO COM_SHAREHOLDER VALUES(1,104);


INSERT INTO COM_SHAREHOLDER VALUES(2,103);
INSERT INTO COM_SHAREHOLDER VALUES(3,102);
INSERT INTO COM_SHAREHOLDER VALUES(4,101);

SELECT * FROM COM_SHAREHOLDER

C_NO P_NO
1 104
2 103
3 102
4 101

(A) Write cursor which will display names of person who are shareholder of the
given company.

DECLARE
CNAME VARCHAR2(20);
PNAME VARCHAR2(20);
P_NO_OF_SHARES NUMBER;
CURSOR S_SHAREHOLDER IS SELECT C_NAME,P_NAME,P_NO_OF_SHARES
FROM COMPANY,PERSON,COM_SHAREHOLDER
WHERE COM_SHAREHOLDER.C_NO=COMPANY.C_NO AND
COM_SHAREHOLDER.P_NO=PERSON.P_NO;
BEGIN
OPEN S_SHAREHOLDER;
DBMS_OUTPUT.PUT_LINE('---------------LIST OF SHAREHOLDERS OF COMPANY-------
----------------');
DBMS_OUTPUT.PUT_LINE('NAME OF COMPANY------------NAME OF PERSONS---------
-----NO OF SHARES');
LOOP
FETCH S_SHAREHOLDER INTO PNAME,CNAME,P_NO_OF_SHARES;
EXIT WHEN S_SHAREHOLDER%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(CNAME||'-----------------------------'||PNAME||'-----------------
-----------'||P_NO_OF_SHARES);
END LOOP;
CLOSE S_SHAREHOLDER;
END;
/
OUTPUT:-
---------------LIST OF SHAREHOLDERS OF COMPANY----------------
-------

NAME OF COMPANY------------NAME OF PERSONS--------------NO OF


SHARES

AMIT-----------------------------LNT--------------------------
--643

SMITH-----------------------------LNT-------------------------
---245

(B) Write a trigger which get activated when share value of company become
lessthan RS. 10.(Raise user defined exception and give appropriate message)

CREATE OR REPLACE TRIGGER VALUE_SHARE


BEFORE INSERT OR UPDATE ON COMPANY
FOR EACH ROW
WHEN(NEW.C_SHARE_VALUE>10)
BEGIN
RAISE_APPLICATION_ERROR('-200010','CANNOT INSERT! VALUE OF SHARE SHOULD
GREATER THAN 10');
END VALUE_SHARE;
/
OUTPUT:-
Trigger created.

Q.4 Consider the following entities and their relationships.


PERSON(P_NO,P_NAME,P_ADDR)
INVESTMENT(INV_NO,INV_NAME,INV_DATE,INV_AMT)
Relationships between person and investment is one-to-many.
Constraints:- primary key,foregin key,p_name and inv_name should
not be null,inv_amt should be greater than 10,000.
Create a RDB in 3NF.

CREATE TABLE P_PERSON


(P_NO NUMBER(3) PRIMARY KEY,
P_NAME VARCHAR2(20) NOT NULL,
P_ADDR VARCHAR2(20));

INSERT INTO P_PERSON VALUES(301,'ROHAN','PUNE');


INSERT INTO P_PERSON VALUES(302,'RASHMI','MUMBAI');

OUTPUT:-
P_NO P_NAME P_ADDR
301 ROHAN PUNE
302 RASHMI MUMBAI

CREATE TABLE INVESTMENT


(INV_NO NUMBER(2) PRIMARY KEY,
INV_NAME VARCHAR2(20) NOT NULL,
INV_DATE DATE,
INV_AMT NUMBER(12),
P_NO NUMBER(3) REFERENCES P_PERSON(P_NO));

INSERT INTO INVESTMENT VALUES(1,'MUTUAL_FUND','21-SEP-16',25000,301);


INSERT INTO INVESTMENT VALUES(2,'FIXED_DEPOSIT','17-JAN-99',110000,302);

OUTPUT:-

INV_NO INV_NAME INV_DATE INV_AMT P_NO


1 MUTUAL_FUND 21-SEP-16 25000 301
2 FIXED_DEPOSIT 17-JAN-99 110000 302

(A)Write a function which will return name of person having


maximum total amount of investment.

CREATE OR REPLACE FUNCTION AMT


(INV_AMT NUMBER)
RETURN NUMBER IS
INV_MAX NUMBER;
BEGIN
SELECT MAX(INV_AMT)INTO INV_MAX FROM INVESTMENT;
DBMS_OUTPUT.PUT_LINE('MAXIMUM INVESTMENT AMT:- '||INV_MAX);
RETURN INV_MAX;
END;
/

OUTPUT:-
MAXIMUM INVESTMENT AMT:-110000

(B)Write a cusor which will display person wise details of investment.

DECLARE
PNAME VARCHAR2(20);
INVO NUMBER;
INNAME VARCHAR2(20);
INVDATE DATE;
INVAMT NUMBER;
CURSOR C1 IS SELECT P_NAME,INV_NO,INV_NAME,INV_DATE,INV_AMT
FROM P_PERSON,INVESTMENT
WHERE P_PERSON.P_NO=INVESTMENT.P_NO
GROUP BY P_NAME,INV_NO,INV_NAME,INV_DATE,INV_AMT;
BEGIN
OPEN C1;
DBMS_OUTPUT.PUT_LINE('---------------LIST OF PERSONS INVESTMENT-----------------
');
DBMS_OUTPUT.PUT_LINE('PERSON NAME------------INVESTMENT NUMBER------------
INVESTMENT NAME-------------INVESTMENT DATE-------------AMOUNT OF INVEST');
LOOP
FETCH C1 INTO PNAME,INVO,INNAME,INVDATE,INVAMT;
EXIT WHEN C1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(PNAME||'----------'||INVO||'----------'||INNAME||'-----------
'||INVDATE||'---------'||INVAMT);
END LOOP;
CLOSE C1;
END;
/
OUTPUT:-
---------------LIST OF PERSONS INVESTMENT-----------------
PERSON NAME------------INVESTMENT NUMBER------------INVESTMENT
NAME-------------INVESTMENT DATE-------------AMOUNT OF INVEST
ROHAN----------1----------MUTUAL_FUND-----------21-SEP-16-----
----25000
RASHMI----------2----------FIXED_DEPOSIT-----------17-JAN-99--
-------110000

--------------------------------------------------------------

Q.5 Consider the following entities and their relationship.


STUDENT(S_REG_NO,S_NAME,S_CLASS)
COMPETITION(COMP_NO,COMP_NAME,COMP_TYPE)
Relationship between student and competition is many-to-many with
descriptive attribute rank and year.
Constraints:- primary key,foreign key,primary key for third
table(s_reg_no,comp_no_year),s_name and comp_name should not be
null,comp_type can be sports or academic.
Create RDB in 3NF.

CREATE TABLE STUDENT

(S_REG_NO NUMBER(2) PRIMARY KEY,


S_NAME VARCHAR2(20) NOT NULL,
S_CLASS VARCHAR2(10),
S_RANK VARCHAR2(20));
INSERT INTO STUDENT VALUES(1,'RAHUL','SYBBACA','THIRD');
INSERT INTO STUDENT VALUES(2,'YOGITA','FYBBACA','FIRST');
INSERT INTO STUDENT VALUES(3,'PRATIKSHA','TYBBACA','SECOND');

INSERT INTO STUDENT VALUES(4,'NIKUL','SYBBACA','FIRST');


INSERT INTO STUDENT VALUES(5,'SOHAM','FYBBACA','THIRD');

OUTPUT:-

S_REG_NO S_NAME S_CLASS S_RANK


1 RAHUL SYBBACA THIRD
2 YOGITA FYBBACA FIRST
3 PRATIKSHA TYBBACA SECOND
4 NIKUL SYBBACA FIRST
5 SOHAM FYBBACA THIRD

CREATE TABLE COMPETITION


(COMP_NO NUMBER(3),
COMP_NAME VARCHAR2(20) NOT NULL,
COMP_TYPE VARCHAR2(20),

COMP_NO_YEAR VARCHAR2(10) PRIMARY KEY);

INSERT INTO COMPETITION VALUES(501,'FIFA','SPORTS','THIRD');


INSERT INTO COMPETITION VALUES(502,'OLYMPIC','SPORTS','FOURTH');
INSERT INTO COMPETITION VALUES(503,'COM-VISION','ACADEMIC','FIFTH');

INSERT INTO COMPETITION VALUES(504,'TECH-FEST','ACADEMIC','SECOND');


INSERT INTO COMPETITION VALUES(505,'WORLD_CUP','SPORTS','FOURTEENTH');
OUTPUT:-

COMP_NO COMP_NAME COMP_TYPE COMP_NO_YEAR


501 FIFA SPORTS THIRD
503 COM-VISION ACADEMIC FIFTH
502 OLYMPIC SPORTS FOURTH
504 TECH-FEST ACADEMIC SECOND
505 WORLD_CUP SPORTS FOURTEENTH
CREATE TABLE STU_COM
(S_REG_NO NUMBER(2) REFERENCES STUDENT(S_REG_NO),

COMP_NO_YEAR VARCHAR2(10) REFERENCES COMPETITION(COMP_NO_YEAR));

INSERT INTO STU_COM VALUES(1,'THIRD');


INSERT INTO STU_COM VALUES(2,'FOURTH');
INSERT INTO STU_COM VALUES(3,'THIRD');

INSERT INTO STU_COM VALUES(3,'FIFTH');


INSERT INTO STU_COM VALUES(5,'SECOND');

OUTPUT:-

S_REG_NO COMP_NO_YEAR
1 THIRD
2 FOURTH
3 THIRD
3 FIFTH
5 SECOND

(A)Write a function which will accept s_reg_no of student and return total
number of competition in which student has participated in a given year.
CREATE OR REPLACE FUNCTION DISP_REG
(S_NO IN NUMBER) RETURN NUMBER AS

CCNT NUMBER;
BEGIN
SELECT COUNT(*) INTO CCNT FROM STUDENT,COMPETITION,STU_COM
WHERE STU_COM.S_REG_NO=STUDENT.S_REG_NO AND
STU_COM.COMP_NO_YEAR=COMPETITION.COMP_NO_YEAR;
END DISP_REG;
/
//CALLING FUNCTION
DECALRE
RESULT NUMBER;

BEGIN
RESULT:=DISP_REG(3);
DBMS_OUTPUT.PUT_LINE('TOTAL NUMBER OF COMPETITION WHICH STUDENT
PARTICIPATE:- '||RESULT);
END;
/

OUTPUT:-
TOTAL NUMBER OF COMPETITION WHICH STUDENT PARTICIPATE:- 2

(B)Write a cursor which will display year wise details of competitions held.
DECLARE
CURSOR C_COMPETITION IS SELECT
COMP_NO_YEAR,COMP_NO,COMP_NAME,COMP_TYPE INTO FROM COMPETITION ORDER
BY COMP_NO_YEAR;
CREC COMPETITION%ROWTYPE;
COMP_NOYEAR VARCHAR2;
CNT INT;
BEGIN
OPEN C_COMPETITION;
COMP_NOYEAR:='THIRD';
LOOP
FETCH C_COMPETITION INTO CREC;

EXIT WHEN C_COMPETITION%NOTFOUND;


IF(CREC.COMP_NOYEAR<>C_COMPETITION) THEN
CNT:=1;
DBMS_OUTPUT.PUT_LINE('--------------------DETAILS OF COMPETITION OF THIRD YEAR---
---------------');
DBMS_OUTPUT.PUT_LINE(CREC.COMP_NOYEAR||' '||CNT||' ]
'||CREC.COMP_NO||' '||CREC.COMP_NAME||' '||CREC.COMP_TYPE);
ELSE
CNT:=CNT+1;
DBMS_OUTPUT.PUT_LINE(RPAD(' * ',LENGTH(CREC.COMP_NOYEAR),' ')||' '||CNT||'
] '||CREC.COMP_NO||' '||CREC.COMP_NAME||' '||CREC.COMP_TYPE);

END IF;
END LOOP;
CLOSE C_COMPETITION;
END;
/

OUTPUT:-
------------------------DETAILS OF COMPETITION OF THIRD YEAR--
------------
THIRD 1] 501 FIFA SPORTS

Statement processed.

-------------------------------------------------------------
Q.6 Consider the following entities and their relationship.
OWNER(O_NO,O_NAME,O_CITY,O_PH_NO)
ESTATE(E_NO,E_TYPE,E_CITY,E_PRICE)
Relationship between owner and estate is one-to-many.
Constraints:- primary key,foreign key,o_name should not be null,e_type can be
flat,bunglow or land.Create a RDB in 3NF.

CREATE TABLE OWNER


(O_NO NUMBER(3) PRIMARY KEY,

O_NAME VARCHAR2(20) NOT NULL,


O_CITY VARCHAR2(20),
O_PH_NO NUMBER(12));

INSERT INTO OWNER VALUES(101,'SEEMA','PUNE',9955784612);

INSERT INTO OWNER VALUES(102,'ROHAN','NAGAR',7586492574);


INSERT INTO OWNER VALUES(103,'SHEELA','MUMBAI',9478612475);
INSERT INTO OWNER VALUES(104,'TANMAY','AURNAGABAD',8844775621);
INSERT INTO OWNER VALUES(105,'MOHAN','NASHIK',9874657412);

OUTPUT:-

O_NO O_NAME O_CITY O_PH_NO


101 SEEMA PUNE 9955784612
102 ROHAN NAGAR 7586492574
103 SHEELA MUMBAI 9478612475
104 TANMAY AURNAGABAD 8844775621
105 MOHAN NASHIK 9874657412

CREATE TABLE ESTATE


(E_NO NUMBER(2) PRIMARY KEY,
E_TYPE VARCHAR2(20),
E_CITY VARCHAR2(20),
E_PRICE NUMBER(10),

O_NO NUMBER(3) REFERENCES OWNER(O_NO));

INSERT INTO ESTATE VALUES(11,'LAND','NASHIK',2500000,102);


INSERT INTO ESTATE VALUES(12,'FLAT','NAGAR',120000,101);
INSERT INTO ESTATE VALUES(13,'BUNGLOW','PUNE',1000000,103);

INSERT INTO ESTATE VALUES(14,'LAND','JALNA',3500000,103);


INSERT INTO ESTATE VALUES(15,'FLAT','MUMBAI',1500000,105);
OUTPUT:-

E_NO E_TYPE E_CITY E_PRICE O_NO


11 LAND NASHIK 2500000 102
12 FLAT NAGAR 120000 101
13 BUNGLOW PUNE 1000000 103
14 LAND JALNA 3500000 103
15 FLAT MUMBAI 1500000 105

(A)Write a trigger which will accept estate city belongs to a ‘NAGAR’.


CREATE OR REPLACE TRIGGER C_CITY
BEFORE INSERT OR UPDATE ON ESTATE

FOR EACH ROW


WHEN(NEW.E_CITY>'NAGAR')
BEGIN
RAISE_APPLICATION_ERROR('------2000010','CANNOT INSERT ! CITY OF ESTATE SHOULD BE
NAGAR');
END C_CITY;
/
OUTPUT:-
INSERT INTO ESTATE VALUES(16,'LAND','PUNE',3400000,105);
CANNOT INSERT ! CITY OF ESTATE SHOULD BE NAGAR

(B)write a cursor which will display type wise estate details.


DECLARE

TYPE VARCHAR2(20);
NO NUMBER;
CITY VARCHAR2(20);
PRICE NUMBER;
CURSOR E_ESTATE IS SELECT E_TYPE,E_NO,E_CITY,E_PRICE FROM ESTATE WHERE
TYPE='LAND';

BEGIN
OPEN E_ESTATE;
LOOP
FETCH E_ESTATE INTO TYPE,NO,CITY,PRICE;
EXIT WHEN E_ESTATE%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(TYPE||' '||NO||' '||CITY||' '||PRICE);
END LOOP;
CLOSE E_ESTATE;
END;

/
OUTPUT:-
LAND 11 NASHIK 2500000
LAND 14 JALNA 3500000

--------------------------------------------------------------

Q.7 Consider the following entities and their relationship.


BUS(BUS_NO,CAPACITY,SOURCE,DESTINATION)
DRIVER(DNO,DNAME,LICENSE_NO,ADDR,AGE,SALARY)
Relationship between bus and driver is many-to-many with descriptive attribute
date_of_duty_alloted and shift.
Constraints:- primary key,foreign key,primary key for third table
(bus_no,date_of_duty_alloted) dname should not be null,shift can be morning or
evening.
Create a RDB in 3NF.
CREATE TABLE BUS
(BUS_NO NUMBER(4) PRIMARY KEY,
CAPACITY NUMBER(10),

SOURCE VARCHAR2(20),
DESTINATION VARCHAR2(20));

INSERT INTO BUS VALUES(3456,100,'PUNE','MUMBAI');


INSERT INTO BUS VALUES(3457,50,'SATARA','DHULE');
INSERT INTO BUS VALUES(3458,150,'SHIRDI','PUNE');
INSERT INTO BUS VALUES(3459,200,'NASHIK','MUMBAI');

INSERT INTO BUS VALUES(3460,125,'NAGAR','NASHIK');

OUTPUT:-

BUS_NO CAPACITY SOURCE DESTINATION


3456 100 PUNE MUMBAI
3457 50 SATARA DHULE
3458 150 SHIRDI PUNE
3459 200 NASHIK MUMBAI
3460 125 NAGAR NASHIK

CREATE TABLE DRIVER


(DNO NUMBER(2) PRIMARY KEY,
DNAME VARCHAR2(20) NOT NULL,

LICENSE_NO NUMBER(3),
ADDR VARCHAR2(20),
AGE NUMBER(2),
SALARY NUMBER(8),
DATE_OF_DUTY_ALLOTED DATE,

SHIFT VARCHAR2(20));

INSERT INTO DRIVER VALUES(21,'RAGHU',51,'PUNE',45,30000,'2-SEP-98','MORNING');


INSERT INTO DRIVER VALUES(22,'SHAMLAL',52,'NAGAR',51,45000,'7-JAN-93','EVENING');

INSERT INTO DRIVER VALUES(23,'RAMESH',53,'DHULE',35,25000,'2-OCT-00','MORNING');


INSERT INTO DRIVER VALUES(24,'SHARAD',54,'MUMBAI',25,15000,'15-JUN-17','MORNING');
INSERT INTO DRIVER VALUES(25,'PREM',55,'AURANGABAD',32,30000,'31-DEC-
12','EVENING');
OUTPUT:-
D A
N DNA LICENS G SAL DATE_OF_DUTY SHIF
O ME E_NO ADDR E ARY _ALLOTED T
RAGH MOR
21 51 PUNE 45 30000 02-SEP-98
U NING
SHAM EVEN
22 52 NAGAR 51 45000 07-JAN-93
LAL ING
RAME MOR
23 53 DHULE 35 25000 02-OCT-00
SH NING
SHAR MOR
24 54 MUMBAI 25 15000 15-JUN-17
AD NING
AURANG EVEN
25 PREM 55 32 30000 31-DEC-12
ABAD ING

CREATE TABLE BU_DRIVER


(BUS_NO NUMBER(4) REFERENCES BUS(BUS_NO),
DNO NUMBER(2) REFERENCES DRIVER(DNO));

INSERT INTO BU_DRIVER VALUES(3456,22);


INSERT INTO BU_DRIVER VALUES(3457,21);
INSERT INTO BU_DRIVER VALUES(3458,22);
INSERT INTO BU_DRIVER VALUES(3457,24);
INSERT INTO BU_DRIVER VALUES(3460,23);

OUTPUT:-

BUS_NO DNO
3456 22
3457 21
3458 22
3457 24
3460 23

(A)Write a function which will return name of driver having maximum salary.
CREATE OR REPLACE FUNCTION MAX_SAL(DNO IN NUMBER)
RETURN VARCHAR2 IS
D_NAME VARCHAR2;
BEGIN
SELECT DNAME INTO D_NAME FROM DRIVER WHERE DNAME=(SELECT MAX(SAL) FROM
DRIVER)DNO=DNO;
RETURN(D_NAME);

END;
/

//CALLING FUNCTION

DECLARE
NAME VARCHAR2(20);
BEGIN
NAME:=MAX_SAL(22);
DBMS_OUTPUT.PUT_LINE(NAME);

END;
/
OUTPUT:-
SHAMLAL

(B)Write a cursor which will display date wise bus and their driver details.

DECLARE
DUTY_DATE DATE;
BNO NUMBER;

CAPACITY NUMBER;
SOURCE VARCHAR2(20);
DESTINATION VARCHAR2(20);
DNAME VARCHAR2(20);
LICENSE_NO NUMBER;
AGE NUMBER;
SALARY NUMBER;
SHIFT VARCHAR2(20);
CURSOR BUS_DRIVER IS SELECT
DATE_OF_DUTY,B_NO,CAPACITY,SOURCE,DESTINATION,DNAME,LICENSE_NO,ADDR,AGE,SA
LARY,SHIFT FROM BUS,DRIVER,BU_DRIVER WHERE BUS.BUS_NO=BU_DRIVER.BUS_NO AND
DRIVER.DNO=BU_DRIVER.DNO ORDER BY DATE_OF_DUTY='7-JAN-93';
BEGIN
OPEN BUS_DRIVER;

LOOP
FETCH BUS_DRIVER INTO
DUTY_DATE,BNO,CAPACITY,SOURCE,DESTINATION,DNAME,LICENCE_NO,AGE,SALARY,SHIFT;
EXIT WHEN BUS_DRIVER%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('---------------------DATE WISE DRIVER AND BUS DETAILS------------
-----');
DBMS_OUTPUT.PUT_LINE('DUTY_DATE||' '||BNO||' '||CAPACITY||' '||SOURCE||'
'||DESTINATION||' '||DNAME||' '||LICENSE_NO||' '||AGE||' '||SALARY||'
'||SHIFT);
END LOOP;
CLOSE BUS_DRIVER;
END;

/
OUTPUT:-
------------------DATE WISE DRIVER AND BUS DETAILS------------
----
7-JAN-93 3456 50 PUNE MUMBAI SHAMLAL 52 NAGAR 51 45000
MORNING
7-JAN-93 3458 150 SHIRDI PUNE SHAMLAL 52 NAGAR 51 45000
MORNING

--------------------------------------------------------------
------
Q.8Consider the following entities and their relationship.
DRUG((D_NO,D_NAME,COMPANY,PRICE)
MEDICAL_STORE(M_NO,M_NAME,M_CITY,PH_NO)
Relationship between drug and medical_store is many-to-many with descriptive
attribute quantity.
Constraints:- primary key,foreign key,m_name and d_name should not be
null,m_city can be NAGAR & PUNE.
Create a RDB in 3NF.
CREATE TABLE DRUG
(D_NO NUMBER(3) PRIMARY KEY,
D_NAME VARCHAR2(20) NOT NULL,
COMPANY VARCHAR2(20),

PRICE NUMBER(8,4),
QUANTITY NUMBER(5));

INSERT INTO DRUG VALUES(401,'NUMLO-TM','PHARMACEUTICALS',109.30,10);


INSERT INTO DRUG VALUES(402,'GLYCOMET','USV',55.61,15);
INSERT INTO DRUG VALUES(403,'NITREST','SUN-PHARMA',54.64,10);
INSERT INTO DRUG VALUES(404,'ROZUCOR','TORRENT_PHARMA',61.50,10);
INSERT INTO DRUG VALUES(405,'LIOFEN','SUN_PHARMA',147.00,15);

OUTPUT:-

D_NO D_NAME COMPANY PRICE QUANTITY


401 NUMLO-TM PHARMACEUTICALS 109.3 10
402 GLYCOMET USV 55.61 15
403 NITREST SUN-PHARMA 54.64 10
404 ROZUCOR TORRENT_PHARMA 61.5 10
405 LIOFEN SUN_PHARMA 147 15

CREATE TABLE MEDICAL_STORE


(M_NO NUMBER(2) PRIMARY KEY,

M_NAME VARCHAR2(20) NOT NULL,


M_CITY VARCHAR2(20),
PH_NO NUMBER(12));

INSERT INTO MEDICAL_STORE VALUES(11,'GANPATI','NAGAR',24263533);

INSERT INTO MEDICAL_STORE VALUES(12,'SURYA','PUNE',23262132);


INSERT INTO MEDICAL_STORE VALUES(13,'MAHESH','PUNE',2536230);
INSERT INTO MEDICAL_STORE VALUES(14,'PRASHANT','NAGAR',23524302);
INSERT INTO MEDICAL_STORE VALUES(15,'UDAY','NAGAR',962306810);
OUTPUT:-

M_NO M_NAME M_CITY PH_NO


11 GANPATI NAGAR 24263533
12 SURYA PUNE 23262132
13 MAHESH PUNE 2536230
14 PRASHANT NAGAR 23524302
15 UDAY NAGAR 962306810

CREATE TABLE DRUG_MEDICAL


(D_NO NUMBER(3) REFERENCES DRUG(D_NO),
M_NO NUMBER(2) REFERENCES MEDICAL_STORE(M_NO));

INSERT INTO DRUG_MEDICAL VALUES(401,11);


INSERT INTO DRUG_MEDICAL VALUES(402,11);
INSERT INTO DRUG_MEDICAL VALUES(402,12);
INSERT INTO DRUG_MEDICAL VALUES(403,14);
INSERT INTO DRUG_MEDICAL VALUES(405,15);

OUTPUT:-

D_NO M_NO
401 11
402 11
402 12
403 14
405 15

(A)write a cursor to display details of drug.


DECLARE
DNO NUMBER;
DNAME VARCHAR2(20),
COMPANY VARCHAR2(20),

PRICE NUMBER,
QUANTITY NUMBER;
CURSOR D1 IS SELECT D_NO,D_NAME,COMPANY,PRICE,QUANTITY FROM DRUG ORDER BY
DNO=405;
BEGIN
OPEN D1;
LOOP
FETCH D1 INTO DNO,DNAME,COMPANY,PRICE,QUANTITY;
EXIT WHEN D1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(DNO||' '||DNAME||' '||COMPANY||' '||PRICE||'
'||QUANTITY);
END LOOP;

CLOSE D1;
END;
/

OUTPUT:-
405 LIOFEN SUN_PHARMA 147.00 15

(B) write a trigger that restricts insertion and updation of drug having price less than zero.
(Raise user defined exception and give appropriate message).

CREATE OR REPLACE TRIGGER D_DRUG


BEFORE INSERT OR UPDATE ON DRUG
FOR EACH ROW
WHEN(NEW.PRICE>0)

BEGIN
RAISE_APPLICATION_ERROR('----200010','CANNOT INSERT! THE PRICE OF DRUG SHOULD BE
GREATER THAN ZERO.');
END D_DRUG;
/
OUTPUT:-
INSERT INTO DRUG VALUES(406,'DIVAA','SUN_PHARMA',-24,20);
CANNOT INSERT! THE PRICE OF DRUG SHOULD BE GREATER THAN ZERO.

--------------------------------------------------------------
Q.9 Consider the following entities and their relationship.
TRAIN(T_NO,T_NAME)
PASSENGER(P_NO,P_NAME,ADDR,AGE)
Relationship between train and passenger is many-to-many with descriptive
attribute date,seat_no and amt.
Create a RDB in 3NF.
CREATE TABLE TRAIN
(T_NO NUMBER(2) PRIMARY KEY,
T_NAME VARCHAR2(30) NOT NULL,
T_DATE DATE);

INSERT INTO TRAIN VALUES(41,'KARNATAKA_EXPRESS','25-SEP-18');


INSERT INTO TRAIN VALUES(42,'RAJDHANI_EXPRESS','12-DEC-18');
INSERT INTO TRAIN VALUES(43,'ARUNACHAL_EXPRESS','20-JAN-19');

INSERT INTO TRAIN VALUES(44,'AGRA_EXPRESS','15-NOV-18');


INSERT INTO TRAIN VALUES(45,'AJANTA_EXPRESS','1-OCT-19');

OUTPUT:-

T_NO T_NAME T_DATE


41 KARNATAKA_EXPRESS 25-SEP-18
42 RAJDHANI_EXPRESS 12-DEC-18
43 ARUNACHAL_EXPRESS 20-JAN-19
44 AGRA_EXPRESS 15-NOV-18
45 AJANTA_EXPRESS 01-OCT-19

CREATE TABLE PASSENGER


(P_NO NUMBER(3) PRIMARY KEY,
P_NAME VARCHAR2(20) NOT NULL,

ADDR VARCHAR2(20),
AGE NUMBER(3),
SEAT_NO NUMBER(2),
AMT NUMBER(6));

INSERT INTO PASSENGER VALUES(301,'VIRENDRA','NAGAR',60,42,1500);


INSERT INTO PASSENGER VALUES(302,'DARSHAN','PUNE',25,43,2500);
INSERT INTO PASSENGER VALUES(303,'SOHAM','MUMBAI',35,46,2000);
INSERT INTO PASSENGER VALUES(304,'PREM','NASHIK',40,48,3500);
INSERT INTO PASSENGER VALUES(305,'MADHU','AURANGABAD',35,41,2500);

OUTPUT:-

P_NO P_NAME ADDR AGE SEAT_NO AMT


301 VIRENDRA NAGAR 60 42 1500
302 DARSHAN PUNE 25 43 2500
303 SOHAM MUMBAI 35 46 2000
304 PREM NASHIK 40 48 3500
305 MADHU AURANGABAD 35 41 2500
CREATE TABLE TRA_PASS
(T_NO NUMBER(2) REFERENCES TRAIN(T_NO),
P_NO NUMBER(3) REFERENCES PASSENGER(P_NO));

INSERT INTO TRA_PASS VALUES(41,302);


INSERT INTO TRA_PASS VALUES(42,302);
INSERT INTO TRA_PASS VALUES(43,301);
INSERT INTO TRA_PASS VALUES(44,303);

INSERT INTO TRA_PASS VALUES(45,304);


OUTPUT:-

T_NO P_NO
41 302
42 302
43 301
44 303
45 304

(A)Write a function which will display train details having maximum passenger.
CREATE OR REPLACE FUNCTION MAX_PASS
(PNO IN NUMBER)
RETURN VARCHAR2
AS

TNAME VARCHAR2(20);
BEGIN
SELECT T_NAME INTO TNAME FROM TRAIN WHERE T_NAME=(SELECT MAX(P_NO) FROM
PASSENGER)AND PNO=PNO;
RETURN(TNAME);
END;
/
//CALLING FUNCTION
DECLARE

NAME VARCHAR2(20);
BEGIN
NAME:=MAX_PASS(304);
DBMS_OUTPUT.PUT_LINE(NAME);
END;

/
OUTPUT:-
MADHU

(B)Write a cursor which will display date wise train and their passenger details.
DECLARE

TDATE DATE;

PNO NUMBER;

PNAME VARCHAR2(20),

ADDR VARCHAR2(20);

AGE NUMBER;

SEATNO NUMBER;

TAMT NUMBER;

CURSOR T_DATE IS SELECT T_DATE,P_NO,P_NAME,ADDR,AGE,SEAT_NO,AMT

FROM TRAIN,PASSENGER,TRA_PASS

WHERE TRA_PASS.T_NO=TRAIN.T_NO

AND TRA_PASS.P_NO=PASSENGER.P_NO

ORDER BY T_DATE='25-SEP-2018';

BEGIN

OPEN T_DATE;

LOOP

FETCH T_DATE INTO TDATE,PNO,PNAME,ADDR,AGE,SEATNO,TAMT;

EXIT WHEN T_DATE%NOTFOUND;


DBMS_OUTPUT.PUT_LINE('---------------PASSENGER AND THEIR TRAIN DETAIL---------------------');

DBMS_OUTPUT.PUT_LINE(TDATE||' '||PNO||' '||PNAME||' '||ADDR||' '||AGE||'


'||SEATNO||' '||TAMT);

END LOOP;

CLOSE T_DATE;

END;

OUTPUT:-
--------------PASSENGER AND THEIR DETAIL----------------------
---
25-SEP-2018 302 DARSHAN PUNE 25 43 2500

--------------------------------------------------------------
Q.10 Consider the following entities and their relationship.
ROUTE(ROUTE_NO,SOURCE,DESTINATION,NO_OF_STATION)
BUS(BUS_NO,CAPACITY,DEPOT_NAME)
Relationship between route and bus is one- to- many.
Constraints:- primary key,foreign key,depot_name should be null,bus capacity
should be greater than 40.
Create a RDB in 3NF.
CREATE TABLE ROUTE

(ROUTE_NO NUMBER(2) PRIMARY KEY,


SOURCE VARCHAR2(20) NOT NULL,
DESTINATION VARCHAR2(20),
NO_OF_STATION NUMBER(2));

INSERT INTO ROUTE VALUES(11,'PUNE','MUMBAI',15);


INSERT INTO ROUTE VALUES(12,'SATARA','DHULE',5);
INSERT INTO ROUTE VALUES(13,'SHIRDI','PUNE',10);
INSERT INTO ROUTE VALUES(14,'NASHIK','MUMBAI',12);
INSERT INTO ROUTE VALUES(15,'NAGAR','NASHIK',10);
Output:-

ROUTE_NO SOURCE DESTINATION NO_OF_STATION


11 PUNE MUMBAI 15
12 SATARA DHULE 5
13 SHIRDI PUNE 10
14 NASHIK MUMBAI 12
15 NAGAR NASHIK 10

CREATE TABLE B_BUS


(BUS_NO NUMBER(3) PRIMARY KEY,
CAPACITY NUMBER(3),
DEPOT_NAME VARCHAR2(20) NOT NULL,
ROUTE_NO NUMBER(2) REFERENCES ROUTE(ROUTE_NO));

INSERT INTO B_BUS VALUES(101,150,'PUNE',11);


INSERT INTO B_BUS VALUES(102,200,'NASHIK',12);
INSERT INTO B_BUS VALUES(103,50,'AURANGABAD',11);
INSERT INTO B_BUS VALUES(104,100,'NAGAR',14);

INSERT INTO B_BUS VALUES(105,125,'MUMBAI',15);


Output:-

BUS_NO CAPACITY DEPOT_NAME ROUTE_NO


101 150 PUNE 11
102 200 NASHIK 12
103 50 AURANGABAD 11
104 100 NAGAR 14
105 125 MUMBAI 15

(A)Write a procedure program which will display all bus details for a given route.
CREATE OR REPLACE PROCEDURE DISP_BUS(ROUTE_NO IN NUMBER) IS
ROUTE_NO NUMBER;
BUSNO NUMBER;
CAPACITY NUMBER;
DEPOT_NAME VARCHAR2(20);
BEGIN

SELECT ROUTE_NO,BUS_NO,CAPACITY,DEPOT_NAME FROM ROUTE,B_BUS WHERE


ROUTE_NO=ROUTE_NO

AND ROUTE.ROUTE_NO=B_BUS.ROUTE_NO;
DBMS_OUTPUT.PUT_LINE('ROUTE NO:- '||ROUTE_NO);
DBMS_OUTPUT.PUT_LINE('BUS NO:- '||BUSNO);
DBMS_OUTPUT.PUT_LINE('CAPACITY OF BUS:- '||CAPACITY);
DBMS_OUTPUT.PUT_LINE('DEPARTURE NAME:- '||DEPOT_NAME);

END;
/

//CALLING PROCEDURE
BEGIN

DISP_REG(12);
END;
/
OUTPUT:-
ROUTE NO:- 12
BUS NO:- 102
CAPACITY OF BUS:- 200
DEPARTURE NAME:- NASHIK

(B)WRITE A TRIGGER THAT RESTRICTS INSERTION OF ROUTE HAVING NUMBER OF


STATION LESS
CREATE OR REPLACE TRIGGER STATION_TRG
BEFORE INSERT OR UPDATE ON ROUTE
FOR EACH ROW

WHEN(NEW.NO_OF_STATION>0)
BEGIN
RAISE_APPLICATION_ERROR('-200010','CANNOT INSERT ! THE NUMBER OF STATION
SHOULD BE GREATER THAN ZERO);
END STATION_TRG;
/
OUTPUT:-

INSERT INTO ROUTE VALUES(16,'PUNE','NASHIK',-25);


CANNOT INSERT ! THE NUMBER OF STATION SHOULD BE GREATER THAN
ZERO

--------------------------------------------------------------

Anda mungkin juga menyukai