Dbms Final
Dbms Final
WRITE A PL/SQL BLOCK TO IMPLEMENT DEPOSIT AND WITHDRAW. WITHDRAWS SHOULD NOT BE ALLOWED IF THE BALANCE GOES BELOW RS.1000.
SOLUTION 1. CREATE TABLE SB_ACCOUNT ( ACCOUNT_NO VARCHAR2(10), CUSTOMER_NAME VARCHAR2(25), BALANCE NUMBER(10,2)); Declare mcbal number(10,2); mact_no varchar2(10); withdraw number(10,2); begin mact_no := &mact_no; select balance into mcbal from sb_account where account_no=mact_no; withdraw := &withdraw; mcbal := mcbal-withdraw; if mcbal < 1000 then dbms_output.put_line('WITHDRAWAL NOT POSSIBLE BALANCE BELOW 1000'); else update sb_account set balance = mcbal where account_no = mact_no; end if; end; /
Output
Q. 2: CREATE THE FOLLOWING TWO TABLES: COLLEGEINFO,FACULTY-INFO, COLLEGE-INFO CONSISTS OF FIELDS: COLLEGE-CODE, COLLEGENAME, ADDRESS. FACULTY-INFO CONSISTS OF FIELDS: COLLEGE-CODE, FACULTY-CODE, FACULTY-NAME, QUALIFICATION, EXPERIENCE-IN-NO-OF-YEARS, ADDRESS. The field college-code is a foreign key, Generate queries to do the following: 1 . List all those faculty members whose experience is greater than equal to 10 years and have MCA degree. 2. List all those faculty members who have at least 10 years of experience but do not have MCA degree. Solution 2: CREATE TABLE COLLEGE_INFO( COLLEGE_CODE VARCHAR2(10) PRIMARY KEY, COLLEGE_NAME VARCHAR2(30), ADDRESS VARCHAR2(40)); CREATE TABLE FACULTY_INFO( FACULTY_CODE VARCHAR2(10)PRIMARY KEY, COLLEGE_CODE VARCHAR2(10)REFERENCES COLLEGE_INFO, FACULTY_NAME VARCHAR2(25),
QUALIFICATON VARCHAR2(15), EXP NUMBER(2), ADDRESS VARCHAR2(30) ); QUERY: 1. SELECT * FROM FACULTY_INFO WHERE EXP >= 10 AND QUALIFICATON LIKE 'MCA'; 2. SELECT * FROM FACULTY_INFO WHERE EXP >= 10 AND QUALIFICATON NOT LIKE 'MCA'; OUTPUT 1.
FACULTY_CODE
F01 F03 F04 F05 F06
COLLEGE_CODE
C01 C01 C02 C02 C02
FACULTY_ NAME
NAJEEB SAKEEB INDRA SINGH SURESH SINGH VISHWAJEET
QUALIFICATON
MCA MCA MCA MCA MCA
EXP
11 13 14 12 15
ADDRESS
DELHI NOIDA GURGAON FARIDABAAD DELHI
2.
FACULTY_CODE
F02 F07 F08 F09
COLLEGE_CODE
C01 C03 C05 C04
FACULTY_ NAME
JYOTI PANKAJ GUNJAN ASHOK
QUALIFICATON
BCA BCA BCA BCA
EXP
15 10 10 17
ADDRESS
NOIDA LUCKNOW MANESHAR DELHI
Q.3)CREATE THE FOLLOWING TABLES FOR LIBRARY INFORMATION SYSTEM: BOOK(ACCESSION-NO,TITLE,PUBLISHER,AUTHOR,STATUS) STATUS COULD BE ISSUED, PRESENT IN THE LIBRARY, SENT FOR BINDING, & CAN NOT BE ISSUED WRITE A TRIGGER WHICH SETS THE STATUS OF A BOOK TO CAN NOT BE ISSUED, IF IT IS PUBLISHED 20 YEARS BACK.
Solution no 3: create or replace trigger checkbook before insert or update on book for each row Declare dop book.date_of_purchase%type; yrs number(10); Begin dop := :new.date_of_purchase; yrs := (months_between(sysdate,dop))/12; if (yrs > 20) then :new.status := 'CANNOT BE ISSUED'; dbms_output.put_line('This Book Is 20 Years Old, Its Status Has Been Changed To "CANNOT BE ISSUED"'); end if; End; Query: insert into book values('21','operating system','wiley','galvin','issued','11-mar-1987') OUTPUT
This Book Is 20 Years Old, Its Status Has Been Changed To "CANNOT BE ISSUED" 1 row(s) inserted.
Q.4)CREATE THE FOLLOWIN TABLES FOR LIBRARY INFORMATION SYSTEM: BOOK(ACCESSION-NO,TITLE,PUBLISHER,AUTHOR,STATUS) STATUS COULD BE ISSUED, PRESENT IN THE LIBRARY, SENT FOR BINDING, & CAN NOT BE ISSUED GENERATE QUERIES TO DO THE FOLLOWING: 1) LIST ALL THOSE BOOKS WHICH ARE NEW ARRIVALS.THE BOOKS WHICH ARE ACQUIRED DURING THE LAST 6 MONTS ARE CATEGORIZED AS NEW ARRIVALS. 2) LIST ALL THOSE BOOKS THAT A\CANNOT BE ISSUED AND PURCHASED 20 YERS AGO.
SOLUTION: 4 CREATE TABLE BOOK( ACCESSION_NO VARCHAR2(10), TITLE VARCHAR2(25), PUBLISHER VARCHAR2(25), AUTHOR VARCHAR2(25), STATUS VARCHAR2(30), DATE_OF_PURCHASE DATE );
QUERY 1.
select accession_no,title,author,date_of_purchase, (sysdate) " current date" from book where months_between(sysdate, date_of_purchase) < 6; 2. select accession_no,title,author,date_of_purchase, (sysdate) " current date", status from book where status like 'cannot be issued' and months_between(sysdate, date_of_purchase) > 20; OUTPUT 1.
ACCESSION_NO
A01 A05 A06
TITLE
OOP SAD DS
AUTHOR
NARYAN MURTHY RMAKRISHNAH KANETKAR
DATE_OF_PURCHASE
22-JUN-10 20-AUG-10 10-FEB-10
CURRENT DATE
12-NOV-10 12-NOV-10 12-NOV-10
2.
ACCESSION_N O
A01 A03 A04
TITLE
BBB XYZ CCC
AUTHOR
GRISHAM GRISHASAAM JOHN
CURRENT DATE
12-NOV-10 12-NOV-10 12-NOV-10
STATUS
CANNOT BE ISSUED CANNOT BE ISSUED CANNOT BE ISSUED
Q.5)CREATE THE FOLLOWING TABLES: STUDENT(ROLL-NO,NAME,DATE-OF-BIRTH,COURSE-ID) COURSE(COURSE-ID,NAME,FEE,DURATION) GENERATE QUERIES TO DO THE FOLLOWING: 1.LIST ALL THOSE STUDENTS WHO ARE GREATER THAN 18 YEARS OF AGE AND HAVE OPTED FOR MCA COURSE. 2.LIST ALL THOSE COURSES WHOSE FEE IS GREATER THAN THAT OF MCA COURSE SOLUTION NO . 5
COURSE_ID VARCHAR2(10)); CREATE TABLE COURSE( COURSE_ID VARCHAR2(10), NAME VARCHAR2(30), FEE NUMBER(6,2), DURATION NUMBER(2)); QUERY 1. select name,round ((months_between(sysdate,date_of_birth))/12) "age" from student where round(months_between(sysdate,date_of_birth))/12 > 18; 2. select course_id,name from course where fee > (select fee course_id like 'mca'); OUTPUT 1.
NAME
NAVEEN
AGE
23
ANUJ ABHAYA 25
2.
COURSE_ID
MTECH BTECH MPHARMA
NAME
MASTERS TECHNOLOGY BACHELOR OF TECHNOLGY MASTER OF PHARMACY
Q.6) CREATE THE FOLLOWING TABLES: STUDENT(ROLL-NO,NAME,SUBJECT NAME,SUBJECT OPTED) SUBJECT(FACULTY-CODE,FACULTY-NAME,SPECIALIZATION) GENERATE QUERIES TO DO THE FOLLOWING: 1)FIND THE NUMBER OF STUDENTS WHO HAVE ENROLLED FOR THE SUBJECT DBMS.
2)FIND ALL THOSE FACULTY MEMBERS WHO HAVE NOT OFFERED ANY SUBJECT.
SOLUTION : 6 CREATE TABLE STUDENT0( ROLL_NO VARCHAR2(10), NAME VARCHAR2(25), SUBJECT_NAME VARCHAR2(25), SUBJECT_OPTED VARCHAR2(25)); CREATE TABLE SUBJECT( FACULTY_CODE VARCHAR2(10), FACULTY_NAME VARCHAR2(25), SPECIALIZATION VARCHAR2(25)); QUERY 1.FIND THE NUMBER OF STUDENTS WHO HAVE ENROLLED FOR THE SUBJECT DBMS. 2.FIND ALL THOSE FACULTY MEMBERS WHO HAVE NOT OFFERED ANY SUBJECT. SOL:1.SELECT COUNT(*)"NO. OF STUDENTS " FROM STUDENT0 WHERE SUBJECT_NAME LIKE 'DBMS'; 2.SELECT FACULTY_CODE, FACULTY_NAME FROM SUBJECT WHERE SPECIALIZATION IS NULL; OUTPUT 1.
NO. OF STUDENTS
5
2.
FACULTY_ CODE
JH04 JMI07 IP05 DU06
FACULTY_ NAME
RAKESH RAMAN ANIL VIKASH
Q.7) CREATE THE FOLLOWING TABLES: ITEM(ITEM-CODE,ITEM-NAME,QTY-IN-STOCK,REODER-LEVEL) SUPPLIER(SUPPLIER-CODE,SUPPLIER-NAME,ADDRESS) CAN-SUPPLY(SUPPLIER-CODE,ITEM-CODE) GENERATE QUERIES TO DO THE FOLLOWIN: 1)LIST ALL THOSE SUPPLIERS WHO CAN SUPPLY THE GIVEN ITEM. 2)LIST ALL THOSE TIEMS WHICH CANNOT BE SUPPLIED BY GIVEN COMPANY.
SOLUTION 7 create table item( item_code varchar(10) primary key, item_name varchar(25), qty_inhand number(8), reorder_level number(8)); create table supplier( supplier_code varchar(10) primary key, supplier_name varchar(25), address varchar(30)); create table can_supply( supplier_code varchar2(10), item_code varchar2(10), primary key (supplier_code,item_code)); QUERY: select supplier_name, supplier_code from supplier where supplier_code in(select supplier_code from can_supply where item_code in (select item_code from item where item_name like 'coke'));
SUPPLIER_ NAME
LEYLAND HITACHI ASKIN BRUCH
SUPPLIER_CODE
S01 S02 S03 S04
select item_code, item_name from item where item_code not in(select item_code from can_supply where supplier_code = 's01');
ITEM_ CODE
I05 I06 I10
ITEM_NAME
BREADS EGG FRUITS
Q.8) CREATE THE FOLLOWING TABLES: STUDENT(ROLL-NO,MARKS,CATEGORY,DISTRICT,STATE) STUDENT-RANK(ROLL-NO,MARKS,RANK) GENERATE QUERIES TO DO THE FOLLWING: 1)LIST ALL THOSE STUDENTS WHO HAVE COME FROM UP STATE AND SECURED A RANK ABOVE 100; 2)LIST ALL THOSE STUDENTS WHO COME FROM RAJASTHAN STATE AND BELONG TO GIVEN CATEGORY WHO HAVE SECURED A RANK ABOVE 100. SOLUTION 8 create table student2( roll_no varchar2(10), marks number(10), category varchar2(10), district varchar2(10), state varchar2(10)); create table student_rank( roll_no varchar2(10), marks number(10), rank number(5)); QUERY: select roll_no, state from student2 where state = 'up'and roll_no in(select roll_no from student where rank< 100);
ROLL_NO
1 2 UP UP
STATE
select roll_no, state, category from student2 where state like 'rajasthan' and category like 'g' and roll_no in(select roll_no from student_rank where rank < 100);
ROLL_NO
5 6
STATE
RAJASTHAN RAJASTHAN
CATEGORY
OBC OBC
Q.9) CREATE THE FOLLOWING TABLES: BRANCH(BRANCH-ID,BRANCH-NAME,CUSTOMER-CITY,BRANCH-ID) CUSTOMER(CUSTOMER-ID,CUSTOMER-NAME,CUSTOMER-CITY,BRACHID) GENERATE QUERIES TO DO THE FOLLOWING: 1)LIST ALL THOSE CUSTOMERS WHO LIVE IN THE SAME CITY AS THE BRANCH IN WHICH THEY HAVE ACCOUNT. 2)LIST ALL THOSE CUSTOMERS WHO HAVE AN ACCOUNT IN A GIVEN BRANCH CITY
SOLUTION 9. create table branch( branch_id varchar2(10), branch_name varchar2(20), branch_city varchar(10)); create table customer( customer_id varchar2(10), customer_name varchar2(20), customer_city varchar2(10), branch_id varchar2(10)); query: select A.customer_id, A.customer_name, B.branch_id, B.branch_city, A.customer_city from customer A, (select branch_id, branch_city from branch) B where A.branch_id = B.branch_id and A.customer_city = B.branch_city;
CUSTOMER_ID
K001 PR05 ST06
CUSTOMER_NAME
NAVEEN ANUJ HUSSAIN
BRANCH_ ID
KTR1 PRS STM
BRANCH_ CITY
KATIHAR PARASNATH SITAMARHI
CUSTOMER_ CITY
KATIHAR PARASNATH SITAMARHI
select customer_id, customer_name, customer_city from customer where branch_id in(select branch_id from branch where branch_city = 'DELHI');
CUSTOMER_ID
DL19 DL23
CUSTOMER_NAME
RAKESH RAHUL
CUSTOMER_CITY
DELHI DELHI
Q.10)CREATE THE FOLLOWING TABLES: BOOK(ACCESSION-NO,TITLE,PUBLISHER,YEAR,DATE-OFPURCHASE,STATUS) MEMBER(MEMBER-ID,NAME,NUMBER-OF-BOOKS-ISSUED,MAX-LIMIT) BOOK-ISSUE(ACCESSION-NO,MEMBE-ID,DATE-OF-ISSUE) GENERATE QUERIES TO DO THE FOLLOWING: 1)LIST ALL THOSE BOOKS WHICH ARE DUE FROM THE STUDENTS TO BE RETURNED.A BOOK IS CONSIDERED TO BE DUE IF IT HAS BEEN ISSUED 15 DAYS BACK AND YET NOT RETURNED. 2)LIST ALL THOSE MEMBERS WHO CANNOT BE ISSUED ANY MORE BOOKS.
SOLUTION 10. create table book1( accession_no varchar2(10), title varchar2(20), publisher varchar2(10), dop date, status varchar2(15));
create table member( member_id varchar2(15), name varchar2(15), nob_issued number(3), limit number(2)); create table books_issued( accession_no varchar2(10), member_id varchar(15), doi date); query: select accession_no , title from book1 where accession_no in(select accession_no from books_issued where (months_between(sysdate,doi)*30) > 15);
ACCESSION_ NO
IT002 CA05 CA04
TITLE
SAD WP C
NAME
RAJESH VIVEK 2 2
NOB_ ISSUED
2 2
LIMIT
Q.14)CREATE THE FOLLOWING TABLES: BRANCH(BRANCH-ID,BRANCH-NAME,CUSTOMER-CITY,BRANCH-ID) CUSTOMER(CUSTOMER-ID,CUSTOMER-NAME,CUSTOMER-CITY,BRACHID) GENERATE QUERIES TO DO THE FOLLOWING: 1)LIST ALL THOSE CUSTOMERS WHO LIVE IN THE SAME CITY AS THE BRANCH IN WHICH THEY HAVE ACCOUNT. 2)LIST ALL THOSE CUSTOMERS WHO HAVE AN ACCOUNT IN MORE THAN ONE BRANCH. SOLUTION 14.
create table branch( branch_id varchar2(10), branch_name varchar2(20), branch_city varchar(10)); create table customer( customer_id varchar2(10), customer_name varchar2(20), customer_city varchar2(10), branch_id varchar2(10)); query: select A.customer_id, A.customer_name, B.branch_id, B.branch_city, A.customer_city from customer A, (select branch_id, branch_city from branch) B where A.branch_id = B.branch_id and A.customer_city = B.branch_city;
CUSTOMER_ID
G1 G2 G3
CUSTOMER_NAME
RAJU RAMAN RAJEEV
BRANCH_ ID
G01 G02 G03
BRANCH_ CITY
DELHI LUCKNOW NOIDA
CUSTOMER_ CITY
DELHI LUCKNOW NOIDA
15. CREATE THE FOLLOWING TABLES : BRANCH (BRANCH-ID, BRANCH-NAME, CUSTOMER-CITY) CUSTOMER (CUSTOMER-ID, CUSTOMER-NAME, CUSTOMER-CITY, BRANCH-ID) (A) CREATE A FORM TO ACCEPT THE DATA FROM THE USER WITH APPROPRIATE VALIDATION CHECKS. (B) GENERATE QUERIES TO DO THE FOLLOWING : (I) LIST ALL THOSE CUSTOMERS WHO HAVE MORE THAN 100 CUSTOMER. (II) LIST ALL THOSE CUSTOMERS WHO HAVE AN ACCOUNT IN MORE THAN ONE BRANCH. SOLUTION:
CREATE TABLE Branch2( branch_id number(8) NOT NULL PRIMARY KEY, branch_name varchar2(20), customer_city varchar2(20)); -------------------------------------------------------------CREATE TABLE Cusotmer2( customer_id number(8) NOT NULL PRIMARY KEY, customer_name varchar2(20), customer_city varchar2(20), branch_id number(8), constraint fk_branch2 foreign key(branch_id) references Branch1(branch_id)); (i)select customer_name,customer_id from Cusotmer2 where customer_id>(select count(customer_id) from Cusotmer2);
******************************************* ************************ Q.16. CREATE THE FOLLOWING TABLE : STUDENT (ROLL-NO, NAME, CATEGORY, DISTRICT, STATE) STUDENT RANK (ROLL-NO, MARKS, RANK) (A) CREATE A FORM TO ACCEPT THE DATA FROM THE USER WITH APPROPRIATE VALIDATION CHECKS. (B) GENERATE QUERIES TO DO THE FOLLOWING : (I) LIST NAMES OF THE STUDENTS WHO ARE HAVING SAME RANK BUT THEY SHOULD RESIDE IN DIFFERENT DISTRICTS. (II) LIST DETAILS OF STUDENTS THEY BELONGS TO SAME CATEGORY WITH SAME RANK. CREATE TABLE Student10( roll_no number(8) NOT NULL PRIMARY KEY, name varchar2(30), category char(1), district varchar2(20), state varchar2(20)); -------------------------------------------------------------------------CREATE TABLE Student_rank10( roll_no number(8), marks number(3), rank number(3), constraint fk_st foreign key(roll_no) references Student10(roll_no)); (ii)select * from Student s,Student_rank sr where s.category=s.category AND sr.rank=sr.rank;
******************************************************************* 17. CREATE THE FOLLOWING TABLES : STUDENT(ROLL-NO, NAME, DATE-OF-BIRTH, COURSE-ID) COURSE (COURSE-ID, NAME, FEE, DURATION) (A) CREATE A FORM TO ACCEPT THE DATA FROM THE USER WITH APPROPRIATE VALIDATION CHECKS. (B) GENERATE QUERIES TO DO THE FOLLOWING : (I) LIST ALL THOSE STUDENTS WHO ARE BETWEEN 18-19 YEARS OF AGE AND HAVE OPTED FOR MCA COURSE. (II) LIST ALL THOSE COURSES IN WHICH NUMBER OF STUDENTS ARE LESS THAN 10. CREATE TABLE Courses10( course_id number(8) NOT NULL PRIMARY KEY, name varchar2(20), fee number(8,2), duration varchar2(20)); ----------------------------------------------------------------------CREATE TABLE Student20( roll_no number(8)primary key, s_name varchar2(20), date_of_birth date, course_id number(8), constraint fk_cour foreign key(course_id) references Courses10(course_id)); (i)select s_name from Student20 S,Courses10 C where date_of_birth between '01/Jan/1992' AND '01/Jul/1992' AND name='MCA';
1::: select * from student where age >18 AND age<35 and course_id in (select course_id from course where name='mca'); 2::: select c.name from course c, student s where c.course_id=s.course_id group by c.name having count(*)>1
************************************************************* Q.18) STUDENT(ROLL-NO, NAME, DATE-OF-BIRTH, COURSE-ID) COURSE (COURSE-ID, NAME, FEE, DURATION, STATUS) (A) WRITE PL/SQL PROCEDURE TO DO THE FOLLOWING : SET THE STATUS OF COURSE TO "NOT OFFERED" IN WHICH THE NUMBER OF CANDIDATES IS LESS THAN 5. SOLUTION: create table student ( roll_no number(5) NOT NULL, name varchar2(20) NOT NULL, dob date, course_id varchar2(5) PRIMARY KEY ); insert into student values (101,'ADAM','24-OCT-1988','MCS'); insert into student values (102,'JAMES','06-JAN-1985','MTC'); insert into student values (102,'CHARLES','17-APR-1987','MCA'); create table course ( course_id varchar2(5) references student(course_id), name varchar2(40), duration number(2), fee float(10), status varchar2(20) ); insert into course values ('MCS','M.Sc.-CS',2,40000,null); insert into course values ('MTC','M.Tech.-CS',2,120000,null); insert into course values ('MCA','M.C.A',3,100000,null); declare v_status course.status%type:='Not Offered'; cursor c19 is select course_id,count(*) from Student Group by course_id having count(*)<5; begin for i in c19 loop update course set status=v_status; end loop; end;
Q.20) 20. CREATE THE FOLLOWING TABLES : STUDENT(ROLL-NO, NAME, DATE-OF-BIRTH, COURSE-ID) COURSE (COURSE-ID, NAME, FEE, DURATION, STATUS) (A) CREATE A FORM TO ACCEPT THE DATA FROM THE USER WITH APPROPRIATE VALIDATION CHECKS. (B) WRITE PL/SQL PROCEDURE TO DO THE FOLLOWING : SET THE STATUS OF COURSE TO "OFFERED" IN WHICH THE NUMBER OF CANDIDATES IS AT LEAST 10 OTHERWISE SET IT TO "NOT OFFERED". SOLUTION: DECLARE V_STATUS1 COURSE.STATUS%TYPE:='OFFERED'; V_STATUS2 COURSE.STATUS%TYPE:='NOT OFFERED'; CURSOR C20A IS SELECT COURSE_ID,COUNT(*) FROM STUDENT GROUP BY COURSE_ID HAVING COUNT(*)<10; CURSOR C20B IS SELECT COURSE_ID,COUNT(*) FROM STUDENT GROUP BY COURSE_ID HAVING COUNT(*)>10; BEGIN FOR I IN C20A LOOP UPDATE COURSE SET STATUS=V_STATUS1; END LOOP; FOR I IN C20B LOOP UPDATE COURSE SET STATUS=V_STATUS2; END LOOP; END;
Q.21) CREATE THE FOLLOWING TABLE : ITEM (ITEM-CODE, ITEM-NAME, QTY-IN-STOCK, REORDER-LEVEL) SUPPLIER (SUPPLIER-CODE, SUPPLIER-NAME, ADDRESS) CAN-SUPPLY(SUPPLIER-CODE, ITEM-CODE) (A) CREATE A FORM TO ACCEPT THE DATA FROM THE USER WITH APPROPRIATE VALIDATION CHECKS. (B) WRITE PL/SQL PROCEDURE TO DO THE FOLLOWING : GENERATE A REPORT TO LIST THE ITEMS WHOSE QTY-IN-STOCK IS LESS THAN OR EQUAL TO THEIR REORDER-LEVELS. SOLUTION: CREATE TABLE ITEM( ITEM_CODE VARCHAR(10) PRIMARY KEY, ITEM_NAME VARCHAR(25), QTY_INHAND NUMBER(8), REORDER_LEVEL NUMBER(8)); CREATE TABLE SUPPLIER( SUPPLIER_CODE VARCHAR(10) PRIMARY KEY, SUPPLIER_NAME VARCHAR(25), ADDRESS VARCHAR(30)); CREATE TABLE CAN_SUPPLY( SUPPLIER_CODE VARCHAR2(10), ITEM_CODE VARCHAR2(10), PRIMARY KEY (SUPPLIER_CODE,ITEM_CODE)); INSERT INTO ITEM VALUES('ITM0001','BISCUIT',200,6); INSERT INTO ITEM VALUES('ITM0002','BREAD',165,4); INSERT INTO ITEM VALUES('ITM0003','TOOTH PASTE',16,2); INSERT INTO ITEM VALUES('ITM0004','COKE',10,1); INSERT INTO SUPPLIER VALUES ('SC0001','PARLE','NEW DELHI'); INSERT INTO SUPPLIER VALUES ('SC0002','PEPSI','MUMBAI'); INSERT INTO SUPPLIER VALUES ('SC0003','AMUL','JALANDAR'); INSERT INTO CAN_SUPPLY VALUES('SC0001','ITM0001');
INSERT INTO CAN_SUPPLY VALUES('SC0001','ITM0002'); INSERT INTO CAN_SUPPLY VALUES('SC0002','ITM0004'); INSERT INTO CAN_SUPPLY VALUES('SC0003','ITM0002'); DECLARE CURSOR C21 IS SELECT QTY_INHAND,REORDER_LEVEL,ITEM_NAME FROM ITEM; REPORT ITEM%ROWTYPE; BEGIN FOR I IN C21 LOOP IF I.QTY_INHAND<=I.REORDER_LEVEL THEN DBMS_OUTPUT.PUT_LINE('ITEMS WHOSE STOCK IS LESS OR EQUAL TO THEIR REORDER LEVEL'); DBMS_OUTPUT.PUT_LINE(I.ITEM_NAME); END IF; END LOOP; END; / Q.22) CREATE THE FOLLOWING TABLE : ITEM (ITEM-CODE, ITEM-NAME, QTY-IN-STOCK, REORDER-LEVEL) SUPPLIER (SUPPLIER-CODE, SUPPLIER-NAME, ADDRESS, STATUS) CAN-SUPPLY(SUPPLIER-CODE, ITEM-CODE) (A) CREATE A FORM TO ACCEPT THE DATA FROM THE USER WITH APPROPRIATE VALIDATION CHECKS. (B) WRITE PL/SQL PROCEDURE TO DO THE FOLLOWING : SET THE STATUS OF THE SUPPLIER TO "IMPORTANT" IF THE SUPPLIER CAN SUPPLY MORE THAN FIVE ITEMS. SOLUTION: CREATE OR REPLACE FUNCTION STATUS_CHANGE(VS_CODE VARCHAR2) RETURN NUMBER AS MYCOUNT NUMBER(4); BEGIN SELECT COUNT(*) INTO MYCOUNT FROM CAN_SUPPLY WHERE SUPPLIER_CODE=VS_CODE; RETURN MYCOUNT; END; DECLARE CURSOR C21 IS SELECT SUPPLIER_CODE INTO VS_CODE FROM SUPPLIER; COUNT NUMBER(4); BEGIN FOR I IN C21 LOOP COUNT=STATUS_CHANGE(VS_CODE NUMBER);
IF COUNT>=5 THEN UPDATE SUPPLIER SET STATUS='IMPORTANT'; END IF; END LOOP; END; 23. CREATE THE FOLLOWING TABLES : ITEM (ITEM-CODE, ITEM-NAME, QTY-IN-STOCK, REORDER-LEVEL) SUPPLIER (SUPPLIER-CODE, SUPPLIER-NAME, ADDRESS, STATUS) CAN-SUPPLY(SUPPLIER-CODE, ITEM-CODE) (A) CREATE A FORM TO ACCEPT THE DATA FROM THE USER WITH APPROPRIATE VALIDATION CHECKS. (B) WRITE PL/SQL PROCEDURE TO DO THE FOLLOWING : GENERATE A REPORT OF THOSE ITEMS THAT ARE SUPPLIED BY THOSE SUPPLIERS WHOSE STATUS IS "IMPORTANT". SOLUTION: create or replace function report(vs_code varchar2) return varchar2 as mylist varchar2(25); begin select item_code into mylist from Can_supply where supplier_code=vs_code; return mylist; end; / declare vs_code supplier.supplier_code%type; cursor c23 is select supplier_code into vs_code from supplier where status='important'; myitem varchar2(25); begin for i in c23 loop if i.status='important' then vs_code:=i.supplier_code; myitem:=report(vs_code); select item_code, item_name from item where item_code=myitem; dbms_output.put_line(item_code ||'is '|| item_name); end if;
end loop; end; Q. 24. CREATE THE FOLLOWING TABLES : STUDENT (ROLL-NO, NAME, CATEGORY, DISTRICT, STATE) STUDENT RANK (ROLL-NO, MARKS, RANK) WRITE PL/SQL PROCEDURE TO THE FOLLOWING : GENERATE A REPORT TO LIST OF THOSE DISTRICTS FROM WHICH THE FIRST HUNDRED RANKERS COME FROM. SOLUTION: create table student3( roll_no varchar2(10), marks number(10), category varchar2(10), district varchar2(10), state varchar2(10)); create table student_rank( roll_no varchar2(10), marks number(10), rank number(5)); insert into student3 values (101,453,'GC','Rampur','UP'); insert into student3 values (102,389,'GC','Agra','UP'); insert into student3 values (103,422,'RB','Agartala','UP'); insert into student3 values (104,410,'RB','Ganganagar','Rajasthan'); insert into student3 values (105,413,'SC','Silampur','Rajasthan'); insert into student_rank values(101,453,56); insert into student_rank values(102,389,113); insert into student_rank values(103,422,68); insert into student_rank values(104,413,91); insert into student_rank values(105,410,92); create or replace procedure dist_list as cursor c24 is select * from student3 join student_rank on student3.roll_no=student_rank.roll_no; begin for i in c24 loop if i.rank<=100 then dbms_output.put_line(i.district); end if;
end loop; end; / Q.25). CREATE THE FOLLOWING TABLES : STUDENT (ROLL-NO, NAME, SUBJECT-OPTED) SUBJECT RANK (SUBJECT-CODE, SUBJECT-NAME, FACULTY-CODE, SPECIALIZATION) FACULTY (FACULTY-CODE, FACULTY-NAME, SPECIALIZATION) (A) CREATE A FORM TO ACCEPT THE DATA FROM THE USER WITH APPROPRIATE VALIDATION CHECKS. (B) WRITE PL/SQL PROCEDURE TO THE FOLLOWING : SET THE STATUS OF THE SUBJECT TO "NOT OFFERED" IF THE SUBJECT IS NOT OPTED BY AT LEAST 5 STUDENTS. SOLUTION: CREATE TABLE STUDENT4( ROLL_NO VARCHAR2(10), STUDENT_NAME VARCHAR2(25), SUBJECT_OPTED VARCHAR2(10) ); CREATE TABLE FACULTY4 ( FACULTY_CODE VARCHAR2(15), FACULTY_NAME VARCHAR(20), SPECIALIZATION VARCHAR2(10) ); CREATE TABLE SUBJECT4( SUBJECT_NAME VARCHAR2(20), FACULTY_CODE VARCHAR2(20), SPECIALIZATION VARCHAR2(10) ); INSERT INTO STUDENT4 VALUES( CREATE OR REPLACE FUNCTION STATUS_CH RETURN NUMBER AS MYCOUNT NUMBER(4); OPTED VARCHAR2(10); BEGIN
SELECT SUBJECT_OPTED,COUNT(*) INTO OPTED,MYCOUNT FROM STUDENT4 GROUP BY SUBJECT_OPTED; RETURN MYCOUNT; END; DECLARE CURSOR C25 IS SELECT STATUS FROM SUBJECT4 FOR UPDATE; COUNTS NUMBER(4); BEGIN FOR I IN C25 LOOP COUNTS:=STATUS_CH; IF COUNTS<5 THEN UPDATE SUBJECT4 SET STATUS='NOT OFFERED' WHERE CURRENT OF C25; END IF; END LOOP; END; Q.26) CREATE THE FOLLOWING TABLES : STUDENT (ROLL-NO, NAME, SUBJECT-OPTED) SUBJECT RANK (SUBJECT-CODE, SUBJECT-NAME, FACULTY-CODE, SPECIALIZATION) FACULTY (FACULTY-CODE, FACULTY-NAME, SPECIALIZATION) (A) CREATE A FORM TO ACCEPT THE DATA FROM THE USER WITH APPROPRIATE VALIDATION CHECKS. (B) WRITE PL/SQL PROCEDURE TO THE FOLLOWING : SET THE STATUS OF THE SUBJECT TO "NOT OFFERED" IF THE SUBJECT IS NOT OFFERED BY ANY OF THE FACULTY MEMBERS. SOLUTION: create or replace procedure chk_spl as cursor c26 is select * from subject4 for update; begin for value in c26 loop if value.specialization='' then update subject4 set status='not offered'
where current of c26; enf if; end loop; end; Q.27) CREATE THE FOLLOWING TABLES : STUDENT (ROLL-NO, NAME, SUBJECT-OPTED) SUBJECT RANK (SUBJECT-CODE, SUBJECT-NAME, FACULTY-CODE) FACULTY (FACULTY-CODE, FACULTY-NAME, SPECIALIZATION) GENERATE QUERIES TO DO THE FOLLOWING : (I) FIND THE NUMBER OF STUDENTS WHO HAVE ENROLLED FOR THE SUBJECT "DBMS" (II) FIND ALL THOSE SUBJECTS WHICH ARE NOT OFFERED BY ANY FACULTY MEMBERS. SOLUTION: 27---------------create table--------------------1- table student :
create table student ( roll_no number(5) PRIMARY KEY , student_name varchar2(15), subject_opted varchar2(15) ); 2-table Faculty create table faculty ( faculty_cod number(5) PRIMARY KEY , faculty varchar2(15), specialization varchar2(25) );
3-table subject_rank create table subject_rank(subject_code number(4) PRIMARY KEY, subject_name varchar2(44), faculty_cod number(5) REFERENCES faculty(faculty_cod) ); --------------insert data into table-------------------
1-table student insert into student (roll_no,student_name,subject_opted) values(204,'ali ahmad','DBMS'); insert into student (roll_no,student_name,subject_opted) values(205,'asam khan','DBMS'); insert into student (roll_no,student_name,subject_opted) values(201,'ali ahmad','c++'); insert into student (roll_no,student_name,subject_opted) values(202,'Aso','java'); insert into student (roll_no,student_name,subject_opted) values(203,'hassan','network'); table faculty insert into faculty(faculty_cod,faculty,specialization) values(101,'computer','assignment to comp.'); insert into faculty(faculty_cod,faculty,specialization) values(102,'farmacy','assignment to Farm.'); insert into faculty(faculty_cod,faculty,specialization) values(103,'Engne.','assignment to engineer.'); insert into subject_rank(subject_code,subject_name,faculty_cod) values(301,'C++',101); insert into subject_rank(subject_code,subject_name,faculty_cod) values(304,'software engineer',103); I) select count(roll_no) from student where subject_opted='DBMS'; OR select student_name from student where subject_opted='DBMS' II)? it is not true. select faculty from faculty f where f.faculty_cod not in (select s.faculty_cod from subject_rank s);
OR
Q.28)CREATE THE FOLLOWING TABLES : STUDENT (ROLL-NO, NAME, SUBJECT-OPTED) SUBJECT RANK (SUBJECT-CODE, SUBJECT-NAME, FACULTY-CODE) FACULTY (FACULTY-CODE, FACULTY-NAME, SPECIALIZATION) GENERATE QUERIES TO DO THE FOLLOWING : (I) FIND THE NUMBER OF STUDENTS WHO HAVE ENROLLED FOR THE SUBJECT "DBMS" (II) FIND ALL THOSE SUBJECTS WHICH ARE OFFERED BY MORE THAN ONE FACULTY MEMBER. SOLUTION:
28) ---------------create table--------------------------1- table student : create table student ( roll_no number(5) PRIMARY KEY , student_name varchar2(15), subject_opted varchar2(15) ); 2-table Faculty create table faculty ( faculty_cod number(5) PRIMARY KEY , faculty varchar2(15), specialization varchar2(25) ); 3-table subject_rank create table subject_rank(subject_code number(4)PRIMARY KEY , subject_name varchar2(44), faculty_cod number(5) REFERENCES faculty(faculty_cod) ); ----------insert data into table------------------1-table student insert into student (roll_no,student_name,subject_opted) values(204,'ali ahmad','DBMS'); insert into student (roll_no,student_name,subject_opted) values(205,'asam khan','DBMS'); insert into student (roll_no,student_name,subject_opted) values(201,'ali ahmad','c++'); insert into student (roll_no,student_name,subject_opted) values(202,'Aso','java'); insert into student (roll_no,student_name,subject_opted) values(203,'hassan','network'); 3-table subject insert into subject_rank(subject_code,subject_name, faculty_cod)values(301,'C++',101); insert into subject_rank(subject_code,subject_name, faculty_cod)values(304,'software engineer',103); insert into subject_rank(subject_code,subject_name, faculty_cod)values(305,'Adv.java',101); I) select student_name from student where subject_opted !='DBMS'; II)??!
Q.29)Create the following tables: Student (roll-no, name, subject-opted) Student-rank (subject-code, subject-name, faculty-code) Faculty (faculty-code, faculty-name, specialization) Generate queries to do the following: (i) Find the number of students who have enrolled for the subjects OS (ii) Find all those students who opted for more than 5 subjects.
29) ---------------create table--------------------------1- table student : create table student ( roll_no number(5), student_name varchar2(15), subject_opted varchar2(15) ); 2-table Faculty create table faculty ( faculty_cod number(5) PRIMARY KEY , faculty varchar2(15), specialization varchar2(25) ); 3-table subject_rank create table subject_rank(subject_code number(4) PRIMARY KEY, subject_name varchar2(44), faculty_cod number(5) REFERENCES faculty(faculty_cod) ); --------------------------------------------------------
--------------insert data into table------------------1-table student insert into student (roll_no,student_name,subject_opted) values(201,'ali ahmad','Graphic'); insert into student (roll_no,student_name,subject_opted) values(205,'asam khan','DBMS'); insert into student (roll_no,student_name,subject_opted) values(201,'ali ahmad','c++'); insert into student (roll_no,student_name,subject_opted) values(202,'Aso','java'); insert into student (roll_no,student_name,subject_opted) values(203,'hassan','network');
Q.30.) CREATE THE FOLLOWING TABLES : STUDENT (ROLL-NO, NAME, SUBJECT-OPTED) SUBJECT RANK (SUBJECT-CODE, SUBJECT-NAME, FACULTY-CODE) FACULTY (FACULTY-CODE, FACULTY-NAME, SPECIALIZATION) GENERATE QUERIES TO DO THE FOLLOWING : (I) FIND THE NUMBER OF STUDENTS WHO HAVE NOT ENROLLED FOR THE SUBJECT "DBMS" (II) FIND ALL THOSE SUBJECTS WHICH ARE OFFERED BY MORE THAN ONE FACULTY MEMBER SOLUTION:
30) ---------------create table--------------------------1- table student : create table student ( roll_no number(5) PRIMARY KEY , student_name varchar2(15), subject_opted varchar2(15) ); 2-table Faculty create table faculty ( faculty_cod number(5) PRIMARY KEY , faculty varchar2(15), specialization varchar2(25) ); 3-table subject_rank create table subject_rank(subject_code number(4)PRIMARY KEY , subject_name varchar2(44), faculty_cod number(5) REFERENCES faculty(faculty_cod) ); ----------insert data into table------------------1-table student insert into student (roll_no,student_name,subject_opted) values(204,'ali ahmad','DBMS'); insert into student (roll_no,student_name,subject_opted) values(205,'asam khan','DBMS'); insert into student (roll_no,student_name,subject_opted) values(201,'ali ahmad','c++'); insert into student (roll_no,student_name,subject_opted) values(202,'Aso','java'); insert into student (roll_no,student_name,subject_opted) values(203,'hassan','network'); 3-table subject insert into subject_rank(subject_code,subject_name, faculty_cod)values(301,'C++',101); insert into subject_rank(subject_code,subject_name, faculty_cod)values(304,'software engineer',103); insert into subject_rank(subject_code,subject_name, faculty_cod)values(305,'Adv.java',101);
Q.31)A HOSPITAL MAITAINS BLOOD DONORS RECORD INFORMATION IN A FILE.THE ITEMS ARE DONOR NUMBER,DONOR NAME,DONOR AGE,DONOR ADDRESS,PIN,PLACE OF BIRTH,BLOOD GROUP(A,B,AB &O) WRITE A PROGRAM TO PRINT OUT THE NUMBER,NAME AND ADDRESS OF THE DONORS FOR THE FOLLOWING CATEGORIESL A)BLOOD DONOR HAVING THE BLOOD GROUP AB. B)BLODD DONOR IN THE AGE GROUP BETWEEN 16-25. C)FEMALE DONORS HAVING BLODD GROUP A IN THE AGE BETWEEN 2025. SOLUTION:
31- ------------------create table-----------------------create table blood_donor( donor_no number(4) PRIMARY KEY, donor_name varchar2(10), donor_age number(5), donor_address varchar2(17), place_birth varchar(12), blood_group varchar(12) ); -----------------------------insert table----------------insert into blood_donor values (1,'ali',23,'delhi','11-12-1987','A'); insert into blood_donor values (2,'jack',24,'delhi','11-12-1988','b'); insert into blood_donor values (3,'micle',15,'nework','11-12-1994','AB'); insert into blood_donor values (4,'ASo',16,'sul','11-12-1991','O'); insert into blood_donor values (5,'AZAd',20,'hawler','11-12-1999','A'); insert into blood_donor values (6,'KURDUSTAN',22,'istanbul','11-12-1997','O'); insert into blood_donor values (7,'KURDA',25,'puna','11-12-1990','AB');
c)select donor_no,donor_name,donor_address from blood_donor where donor_age between 16 and 25 and blood_group='A';
Q.32)CONSIDER THE FOLLWING RELATIONS FOR A DATABASE THAT KEEPS TRACK OF BUSINESS TRIPS OF SALES PERSONS IN A SALES OFFICE: SALES PERSON(SSN,NAME,START-YEAR,DEPT-NO) TRIP(SSN,FROM-CITY,TO-CITY,DEP-DATE,REP-DATE,TRIP-DATE) EXPENSE(TRIP-ID,ACCOUNT#,AMOUNT) CREATE TABLES IN ORACLE FOR THE ABOVE SCHEMA SPECIFY THE FOREIGN KEYS.WRITE SQL FOR THE FOLLOWING: A)PRINT THE SSN OF SALES PERSON WHO TOOLS TRIPS TO BANGALORE. B)PRINT THE TOTAL TRIP EXPENSE INCURRED BY SALES MAN WITH SSN 234-56-7890. SOLUTION: 32)----------------------create table ---------------1-create table sales_person( ssn number(5)PRIMARY KEY, name varchar(15), star_year varchar(15), dept_no number(5) ); 2- create table trip(trip_id number(5) PRIMARY KEY, from_city varchar(15), to_city varchar(15), dep_date varchar(15), rep_date varchar(15), ssn number(5)REFERENCES sales_person(ssn)); 3-create table expense( account number(6), amount number(5), trip_id number(5)REFERENCES trip(trip_id)); -----------------------insert--------------1- sales_person insert into sales_person values(1,'ali','1990',10); insert into sales_person values(2,'othman','1998',1); insert into sales_person
values(3,'hassan','2000',5); insert into sales_person values(4,'hussain','2003',7); insert into sales_person values(5,'aso','2006',3); insert into sales_person values(6,'ali','2007',2); 2-trip insert into trip values(110,'Delhi','puna','1-11-2003','311-20003',1); insert into trip values( 111,'Delhi','hayderabad','1-112003','3-11-20003', 2); insert into trip values(112 ,'Delhi','UP ','1-11-2003','3-11-20003',3 ); insert into trip values( 113,'Delhi','Banglore ','1-112003','3-11-20003',4 ); insert into trip values( 114,'Delhi','alahabad ','1-112003','3-11-20003', 5); insert into trip values(115 ,'Delhi','kshmir ','1-112003','3-11-20003',6 ); 3-expense insert into expense values(112,500,110); insert into expense values(113,600,110); insert into expense values(112,5000,112); insert into expense values(112,500,110); insert into expense values(115,500,113); 1- select p.ssn from sales_person p,trip t where p.ssn=t.ssn and t.to_city='puna' 1- select p.ssn from sales_person p,trip t where p.ssn=t.ssn and t.to_city='puna'
2- select sum(amount) from trip t,expense e where t.trip_id=e.trip_id and e.trip_id= 110 or select sum(amount) from trip t,expense e where t.trip_id=e.trip_id and t.ssn= 4;
OR
Q.33)AN EXAMINATION HAS BEEN CONDUCTED TO A CLASS OF 7 STUDENTS AND FOUR SCORES FOR EACH STUDENT HAVE BEEN PROVIDED IN THE DATA ALONG WITH REGISTER NUMBER,NAME,WRITE SQL PROGRAM TO DO THE FOLLOWING: ASSIGN A LETTER GRADE TO EACH STUDENT BASED IN THE AVERAGE SCORE AND LIST OUT THE STDENTS REGISTER NUMBER AND AVERAGE SCORE,GRADE.THE MINIMUM PASS FOR EACH SUBJECT IS 50; THE GRADING SYSTM : AVERAGE SCORE GRADE 90-100 ->A 75-89 -> B 60-74 -> C 50-59 -> D 0-49 -> F(FAIL) SOLUTION: 33) create table student1( register_no number(5) PRIMARY KEY, student_name varchar2(44),mark1 number(5), mark2 number(5), grade varchar2(5) );
update student1 set grade='A' where ((mark1+mark2)/2) update student1 set grade='B' where ((mark1+mark2)/2) update student1 set grade='C' where ((mark1+mark2)/2) update student1 set grade='D' where ((mark1+mark2)/2) update student1 set grade='Fail' where ((mark1+mark2)/2)
between 90 and 100 ; between 75 and 89 ; between 60 and 74 ; between 50 and 59 ; between 0 and 49 ;
Q.35)WRITE A PL/SQL PROGRAM TO IMPLEMENT THE FOLLOWING EXCEPTIONS: A)TOO_MANY_ROWS B)DVD_VAL_ON_INDEX SOLUTION: create table customers( cus_id number(5) PRIMARY KEY, f_name varchar2(44), l_name varchar2(33) ); ----------------program---------------a) BEGIN INSERT INTO customers( cus_id , f_name , l_name ) VALUES (
'123X', 'Greg', 'Green' ); EXCEPTION WHEN INVALID_NUMBER THEN DBMS_OUTPUT.PUT_LINE('Conversion of string to number failed'); END; B) create table Employee( ID VARCHAR2(4 BYTE) NOT NULL primary key, First_Name VARCHAR2(10 BYTE), Last_Name VARCHAR2(10 BYTE), Start_Date DATE, End_Date DATE, Salary Number(8,2), City VARCHAR2(10 BYTE), Description VARCHAR2(15 BYTE) ); insert into Employee(ID,First_Name,Last_Name, Start_Date,End_Date,Salary,City,Description) values ('01','Jason','Martin', to_date('19960725','YYYYMMDD'), to_date('20060725','YYYYMMDD'), 1234.56, 'Toronto', 'Programmer') insert into Employee(ID, First_Name, Last_Name, Start_Date,End_Date,Salary,City,Description) values('02','Alison','Mathews', to_date('19760321','YYYYMMDD'), to_date('19860221','YYYYMMDD'), 6661.78, 'Vancouver','Tester') insert into Employee(ID, First_Name, Last_Name, Start_Date,End_Date,Salary,City,Description) values('03','James','Smith',to_date('19781212','YYYYMMDD'), to_date('19900315','YYYYMMDD'), 6544.78, 'Vancouver','Tester') insert into Employee(ID, First_Name, Last_Name, Start_Date,End_Date,Salary,City,Description) values('04','Celia','Rice',to_date('19821024','YYYYMMDD'), to_date('19990421','YYYYMMDD'), 2344.78, 'Vancouver','Manager') insert into Employee(ID, First_Name, Last_Name, Start_Date,End_Date,Salary,City,Description) values('05','Robert', 'Black', to_date('19840115','YYYYMMDD'), to_date('19980808','YYYYMMDD'), 2334.78, 'Vancouver','Tester') insert into Employee(ID, First_Name, Last_Name, Start_Date,End_Date,Salary,City,Description) values('05','Robert','Black',to_date('19840115','YYYYMMDD'), to_date('19980808','YYYYMMDD'), 2334.78, 'Vancouver','Tester') insert into Employee(ID, First_Name, Last_Name, Start_Date,End_Date,Salary, City,Description) values('06','Linda','Green',to_date('19870730','YYYYMMDD'),
to_date('19960104','YYYYMMDD'), 4322.78,'New York', 'Tester') insert into Employee(ID, First_Name, Last_Name, Start_Date,End_Date,Salary, City,Description) values('07','David','Larry',to_date('19901231','YYYYMMDD'),to_date(' 19980212','YYYYMMDD'), 7897.78,'New York', 'Manager') insert into Employee(ID, First_Name, Last_Name, Start_Date,End_Date,Salary, City,Description) values('08','James','Cat',to_date('19960917','YYYYMMDD'), to_date('20020415','YYYYMMDD'), 1232.78,'Vancouver', 'Tester') select * from Employee BEGIN INSERT INTO employee (id)VALUES(1); EXCEPTION WHEN DUP_VAL_ON_INDEX THEN DBMS_OUTPUT.PUT_LINE('Duplicate value on an index'); END;
Q.36)WRITE A PROGRAM IN SQL FOR TELEPHONE BILLING SYSTEM WITH THE FOLLOWING SYSTEMS. CUSTOMER NUMBER,NAME,ADDRESS,OPENING READING,CLOSING READING WITH THE FOLLOWING CONDITIONS: A)READING 0-100 FREE. B)READING 101-TO 200 PER CALL CHARGE RS.1 C)READING 201 TO 300 PER CALL CHARGE RS.2 D)READING 301-400 PER CALL CHARGE RS.3 E)READING >401 PER CALL CHARGE RS.5; PREPARE A TELEPHONE BILL REPORT. SOLUTION:
------------create table---------------create table telph_bill( c_no number(5) PRIMARY KEY, c_name varchar2(15), c_address varchar2(8), open_read number(5), close_read number(5), total number(8) );
--------------insert table -----------insert into telph_bill values (110,'ali','delhi',100,500,1); insert into telph_bill values (111,'aso','Iraq',200,600,1); insert into telph_bill values (112,'hassan','hawler',150,300,1); insert into telph_bill values (113,'hussain','sna',250,500,1); insert into telph_bill values (114,'sara','puna',250,600,1); insert into telph_bill values (115,'sam','puna',100,900,1); insert into telph_bill values (116,'sara2','puna',50,70,1); a) update telph_bill set total=(close_read-open_read)*0 where (close_read-open_read)between 0 and 100 ; b) update telph_bill set total=(close_read-open_read)*1 where (close_read-open_read)between 101 and 200 ; c) update telph_bill set total=(close_read-open_read)*2 where (close_read-open_read)between 201 and 300 ; d) update telph_bill set total=(close_read-open_read)*3 where (close_read-open_read)between 301 and 400 ; e)
Q.37) A SALARY STATEMENT CONTAINS NAME,BASIC PAY,ALLOW,TOTAL DEDUCTION(INCLUDES IT),G PAY, N PAY ALLOWANCE=58% OF BASIC PAY; GROSS PAY=BASIC PAY + ALLOWANCE DEDUCTION=P F+LOAN AMOUNT IT IS CALCULATED ON THE BASIS OF ANNUAL INCOME UNDER THE FOLLOWING CONDITION. ANNUAL SALARY INCOME TAX AMOUNT <=1 LAKH NIL >1 LAKH BUT <=1.5 LAKH 10% >1.5 LAKH BUT <= 3 LAKH 20% >3 LAKH AND ABOVE 30% TOTAL DEDUCTION=DEDUCTION+INCOME TAX WRITE A PROGRAM IN SQL TO PREPARE SALARY REPORT FOR 25 EMPLOYEES. SOLUTION:
UPDATE SALARY S SET ALLOW=58/100*S.BASIC_PAY; UPDATE SALARY S SET GPAY=S.ALLOW+S.BASIC_PAY; UPDATE SALARY S SET TOTAL_DEDUCTION=10/100*BASIC_PAY; FOR INCOME TAX
UPDATE SALARY S SET IT=0 WHERE BASIC_PAY<100000; UPDATE SALARY S SET IT=10/100*(BASIC_PAY) WHERE BASIC_PAY>100000 OR BASIC_PAY<150000; UPDATE SALARY S SET IT=20/100*(BASIC_PAY) WHERE BASIC_PAY>=150000 AND BASIC_PAY<300000 ; UPDATE SALARY S SET IT=30/100*(BASIC_PAY) WHERE BASIC_PAY>=300000; UPDATE SALARY S SET NPAY=BASIC_PAY +ALLOW-TOTAL_DEDUCTION+GROSS_PAY;
Q.38)WRITE A PL/SQL PROGRAM TO IMPLEMENT THE EXCEPTIONS: SOLUTION:
38) DECLARE e_TooManyEmployee EXCEPTION; -- Exception to indicate an error condition BEGIN RAISE e_TooManyEmployee; EXCEPTION WHEN e_TooManyEmployee THEN DBMS_OUTPUT.put_line('e_TooManyEmployee'); WHEN OTHERS THEN DBMS_OUTPUT.put_line('OTHERS'); END;
CREATE TABLES FOR THE ABOVE RELATIONS.WRITE SQL FOR THE FOLLOWING: A)FIND THE NAME OF SUPPLIERS WHO SUPPLY SAME RED PART. B)FIND THE P-IDS OF PARTS THAT ARE SUPPLIED BY ATLEAST TWO DIFFERENT SUPPLIERS. C)FIND THE S-IDS OF SUPPLIERS WHO SUPPLY SAME RED PART AND GREEN PARTS D)FIND THE S-IDS OF SUPPLIERS WHO SUPPLY EVERY PART. SOLUTION: create table supplier(s_id number(4)PRIMARY KEY, s_name varchar2(20), address varchar2(20) ); create table parts(p_id number(4)PRIMARY KEY, p_name varchar2(20), colour varchar2(20) );
create table catalo(s_id number(4) REFERENCES supplier(s_id), p_id number(4) REFERENCES parts(p_id), cost varchar2(20) ); insert into supplier(s_id,s_name,address)values(1,'ali','delhi' ); insert into supplier(s_id,s_name,address)values(2,'aso','puna '); insert into supplier(s_id,s_name,address)values(3,'adaz','del hi'); insert into supplier(s_id,s_name,address)values(4,'alias','ne w delhi'); insert into parts(p_id,p_name,colour)values(1,'com','red');
insert into parts(p_id,p_name,colour)values(2,'com','red'); insert into parts(p_id,p_name,colour)values(3,'phisc','red'); insert into parts(p_id,p_name,colour)values(4,'com','green'); insert into parts(p_id,p_name,colour)values(5,'hist','green'); insert into catalo(s_id,p_id,cost)values(1,1,'1000$'); insert into catalo(s_id,p_id,cost)values(1,2,'1000$'); insert into catalo(s_id,p_id,cost)values(2,3,'1000$'); insert into catalo(s_id,p_id,cost)values(3,3,'1500$'); insert into catalo(s_id,p_id,cost)values(2,2,'1100$'); A) select s.s_name from supplier s,parts p,catalo c where s.s_id=c.s_id and c.p_id =p.p_id and colour='red';
b) select p.p_id from supplier s,parts p,catalo c where s.s_id=c.s_id and c.p_id =p.p_id and s.s_id>=2; C) select s.s_id from supplier s,parts p,catalo c where s.s_id=c.s_id and c.p_id =p.p_id and p.colour='red' and p.colour='green'; D) I am not sure. select s.s_id from supplier s,parts p,catalo c where s.s_id=c.s_id and c.p_id =p.p_id and s.s_id =all(p.p_id)