0% found this document useful (0 votes)
680 views

DBMS Lab Record - Sandeep

The document describes the creation of tables in an Oracle database to model an online bus ticket reservation system. Tables are created for BUS, PASSENGER, RESERVATION, CANCELLATION, and TICKET with relevant attributes. Sample data is inserted into these tables.

Uploaded by

Dosapati Vikas
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
680 views

DBMS Lab Record - Sandeep

The document describes the creation of tables in an Oracle database to model an online bus ticket reservation system. Tables are created for BUS, PASSENGER, RESERVATION, CANCELLATION, and TICKET with relevant attributes. Sample data is inserted into these tables.

Uploaded by

Dosapati Vikas
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 27

E - R DIAGRAMS

BUS : Bus no, Source, Destination, Class

Busno Source

BUS

Destinatio
Class
n

PASSENGER : Pnr_No, Ticket_No, Name, Age, Sex, Ppno

Pnr_No Ticket_No Name

PASSENGER

Age Sex Ppno

RESERVATION : Pnr_No, Journey_Date, No_Of_Seats, Address, Contact_No, Status

Pnr_No Journey_Dat No_Of_Seat


e s

RESERVATION

Address Contact_N Status


o
CANCELLATION : Pnr_No, Journey_Date, No_Of_Seats, Address, Contact_No, Status

Pnr_No Journey_Dat No_Of_Seat


e s

CANCELLATION

Address Contact_N Status


o

TICKET : Ticket_No, Journey_Date, Age, Sex, Source, Destination, Dep_Time

Ticket_No Journey_Dat Age


e

TICKET

Sex Dep_Time

Source Destination
CREATION OF BUS TABLE

SQL> CREATE TABLE BUS (BUSNO NUMBER(5) PRIMARY KEY,SOURCE VARCHAR2(15),DESTINATION


VARCHAR2(15),CLASS VARCHAR(8));

Table created.

SQL> DESC BUS


Name Null? Type
-------------------------- -------------- -------------------
BUSNO NOT NULL NUMBER(5)
SOURCE VARCHAR2(15)
DESTINATION VARCHAR2(15)
CLASS VARCHAR2(8)

SQL> INSERT INTO BUS VALUES(7202,'Secunderabad','Guntur', 'NON-AC');

1 row created.

SQL> INSERT INTO BUS VALUES(2704,'Secunderabad','Howrah', 'AC');

1 row created.

SQL> INSERT INTO BUS VALUES(2714,'Secunderabad','Vijayawada', 'AC');

1 row created.

SQL> INSERT INTO BUS VALUES(2728,'Hyderabad','Visakhapatnam', 'NON-AC');

1 row created.

SQL> INSERT INTO BUS VALUES(2738,'Secunderabad','Kakinada', 'AC');

1 row created.

SQL> INSERT INTO BUS VALUES(2702,'Hyderabad','Mumbai', 'NON-AC');

1 row created.

SQL> SELECT * FROM BUS;

BUSNO SOURCE DESTINATION CLASS


---------- -------------------- -------------------- -----------
7202 Secunderabad Guntur NON_AC
2704 Secunderabad Howrah AC
2714 Secunderabad Vijayawada AC
2728 Hyderabad Visakhapatnam NON_AC
2738 Secunderabad Kakinada AC
2702 Hyderabad Mumbai NON_AC

6 rows selected.

SQL> commit;

Commit complete.
CREATION OF PASSENGER TABLE

SQL> CREATE TABLE PASSENGER(PNR_NO NUMBER(10)PRIMARY KEY,TICKET_NO NUMBER(10),NAME


VARCHAR2(15),AGE NUMBER(3),SEX CHAR(6),PPNO VARCHAR(15));

Table created.

SQL> DESC PASSENGER


Name Null? Type
------------------------------- -------------- ------------------
PNR_NO NOT NULL NUMBER(10)
TICKET_NO NUMBER(10)
NAME VARCHAR2(15)
AGE NUMBER(3)
SEX CHAR(6)
PPNO VARCHAR2(15)

SQL> INSERT INTO PASSENGER VALUES(1234,4321,'Bharath',23,'Male','A1234');

1 row created.

SQL> INSERT INTO PASSENGER VALUES(2345,5432,'Sandeep',21,'Male','B2345');

1 row created.

SQL> INSERT INTO PASSENGER VALUES(3456,6543,'Bhagya',21,'Female','C3456');

1 row created.

SQL> INSERT INTO PASSENGER VALUES(4567,7654,'Akash',40,'Male','D4567');

1 row created.

SQL> INSERT INTO PASSENGER VALUES(5678,8765,'Shireesha',31,'Female','E5678');

1 row created.

SQL> INSERT INTO PASSENGER VALUES(6789,9876,'Anil',35,'Male','F6789');

1 row created.

SQL> INSERT INTO PASSENGER VALUES(7890,0987,'Shiva',25,'Male','G7890');

1 row created.

SQL> SELECT * FROM PASSENGER;

PNR_NO TICKET_NO NAME AGE SEX PPNO


------------- ------------------ --------------- ---------- -------- ----------
1234 4321 Bharath 23 Male A1234
2345 5432 Sandeep 21 Male B2345
3456 6543 Bhagya 21 Female C3456
4567 7654 Akash 40 Male D4567
5678 8765 Shireesha 31 Female E5678
6789 9876 Anil 35 Male F6789
7890 987 Shiva 25 Male G7890
7 rows selected.

SQL> commit;

Commit complete.
CREATION OF RESERVATION TABLE
SQL> CREATE TABLE RESERVATION(PNR_NO NUMBER(10)REFERENCES
PASSENGER(PNR_NO),JOURNEY_DATE DATE,NO_OF_SEATS NUMBER(5),ADDRESS
VARCHAR2(50),CONTACT_NO NUMBER(11),STATUS CHAR(5));

Table created.

SQL> DESC RESERVATION


Name Null? Type
---------------------------- --------- ------------
PNR_NO NUMBER(10)
JOURNEY_DATE DATE
NO_OF_SEATS NUMBER(5)
ADDRESS VARCHAR2(50)
CONTACT_NO NUMBER(11)
STATUS CHAR(5)

SQL> INSERT INTO RESERVATION VALUES(1234,'15-Dec-2010',4,'Hyderabad',8801255245,'Yes');

1 row created.

SQL> INSERT INTO RESERVATION VALUES(2345,'01-Jan-2011',2,'Hyderabad',8099341624,'No');

1 row created.

SQL> INSERT INTO RESERVATION VALUES(3456,'06-Jun-2011',6,'Secunderabad',8143879126,'Yes');

1 row created.

SQL> INSERT INTO RESERVATION VALUES(4567,'20-Dec-2010',1,'Chennai',9966335543,'Yes');

1 row created.

SQL> INSERT INTO RESERVATION VALUES(5678,'14-Jan-2011',3,'Karimnagar',9908109596,'Yes');

1 row created.

SQL> INSERT INTO RESERVATION VALUES(6789,'31-Dec-2010',2,'Warangal',9885554321,'No');

1 row created.

SQL> INSERT INTO RESERVATION VALUES(7890,'11-Dec-2010',5,'Ongole',9908109595,'No');

1 row created.

SQL> SELECT * FROM RESERVATION;

PNR_NO JOURNEY_D NO_OF_SEATS ADDRESS CONTACT_NO STATUS


------------- ------------------- ----------------------- --------------- ---------------------- ------------
1234 15-DEC-10 4 Hyderabad 8801255245 Yes
2345 01-JAN-11 2 Hyderabad 8099341624 No
3456 05-JUN-11 6 Secunderabad 8143879126 Yes
4567 20-DEC-10 1 Chennai 9966335543 Yes
5678 14-JAN-11 3 Karimnagar 9908109596 Yes
6789 31-DEC-10 2 Warangal 9885554321 No
7890 11-DEC-10 5 Ongole 9908109595 No
7 rows selected.

SQL> COMMIT;

Commit complete.
CREATION OF CANCELLATION TABLE

SQL> CREATE TABLE CANCELLATION(PNR_NO NUMBER(10)REFERENCES


PASSENGER(PNR_NO),JOURNEY_DATE DATE,NO_OF_SEATS NUMBER(5),ADDRESS
VARCHAR2(50),CONTACT_NO NUMBER(11),STATUS CHAR(5));

Table created.

SQL> DESC CANCELLATION


Name Null? Type
------------------------- --------- ------------------
PNR_NO NUMBER(10)
JOURNEY_DATE DATE
NO_OF_SEATS NUMBER(5)
ADDRESS VARCHAR2(50)
CONTACT_NO NUMBER(11)
STATUS CHAR(5)

SQL> INSERT INTO CANCELLATION VALUES(6789,'31-Dec-2010',2,'Warangal',9885554321,'No');

1 row created.

SQL> INSERT INTO CANCELLATION VALUES(7890,'11-Dec-2010',5,'Ongole',9908109595,'No');

1 row created.

SQL> SELECT * FROM CANCELLATION;

PNR_NO JOURNEY_D NO_OF_SEATS ADDRESS CONTACT_NO STATUS


------------- ------------------- ----------------------- --------------- ---------------------- ------------
6789 31-DEC-10 2 Warangal 9885554321 No
7890 11-DEC-10 5 Ongole 9908109595 No

SQL> COMMIT;

Commit complete.
CREATION OF TICKET TABLE

SQL> CREATE TABLE TICKET(TICKET_NO NUMBER(10)PRIMARY KEY,JOURNEY_DATE DATE,AGE


NUMBER(3),SEX CHAR(6),SOURCE VARCHAR2(15),DESTINATION VARCHAR2(15),DEP_TIME
VARCHAR(10));

Table created.

SQL> DESC TICKET


Name Null? Type
--------------------------- ----------------- -------------------
TICKET_NO NOT NULL NUMBER(10)
JOURNEY_DATE DATE
AGE NUMBER(3)
SEX CHAR(6)
SOURCE VARCHAR2(15)
DESTINATION VARCHAR2(15)
DEP_TIME VARCHAR2(10)

SQL> INSERT INTO TICKET VALUES(4321,'15-Dec-2010',23,'Male','Secunderabad','Vijayawada','10:00 AM');

1 row created.

SQL> INSERT INTO TICKET VALUES(5432, 01-JAN-11',21,'Male','Secunderabad','Kakinada','08:00 PM');

1 row created.

SQL> INSERT INTO TICKET VALUES(6543,'05-Jun-2011',21,'Female','Hyderabad','Visakhapatnam','09:00 PM');

1 row created.

SQL> INSERT INTO TICKET VALUES(7654,'20-Dec-2010',40,'Male','Hyderabad','Mumbai','03:00 PM');

1 row created.

SQL> INSERT INTO TICKET VALUES(8765,'14-Jan-2011',21,'Female','Secunderabad','Guntur','07:00 AM');

1 row created.

SQL> INSERT INTO TICKET VALUES(9876,'31-Dec-2010',35,'Male','Secunderabad','Howrah','03:00 PM');

1 row created.

SQL> INSERT INTO TICKET VALUES(0987,'11-DEC-10',25,'Male','Secunderabad',' Vijayawada ','10:00 AM');

1 row created.

SQL> SELECT * FROM TICKET;

TICKET_NO JOURNEY_D AGE SEX SOURCE DESTINATION DEP_TIME


------------------ -------------------- -------- ------- -------------------- ----------------------- -----------------
4321 15-DEC-10 23 Male Secunderabad Vijayawada 10:00 AM
5432 01-JAN-11 21 Male Secunderabad Kakinada 08:00 PM
6543 05-JUN-11 21 Female Hyderabad Visakhapatnam 09:00 PM
7654 20-DEC-10 40 Male Hyderabad Mumbai 03:00 PM
8765 14-JAN-11 21 Female Secunderabad Guntur 07:00 AM
9876 31-DEC-10 35 Male Secunderabad Howrah 03:00 PM
987 11-DEC-10 25 Male Secunderabad Vijayawada 10:00 AM
7 rows selected.

SQL> COMMIT;

Commit complete.
1 QUERIES
2
3 1. Display unique PNR_no of all passengers.

4 SQL> SELECT UNIQUE PNR_NO FROM PASSENGER;


5
6 PNR_NO
0 ------------
7 1234
8 2345
9 3456
10 4567
11 5678
12 6789
13 7890
14 7 rows selected.

15 2. Display all the names of male passengers.


16
17 SQL> SELECT NAME FROM PASSENGER WHERE SEX='Male';
18
19 NAME
20 ------------
21 Bharath
22 Sandeep
23 Akash
24 Anil
25 Shiva
26
27 3. Display the ticket numbers and names of all the passengers.

28 SQL> SELECT TICKET_NO,NAME FROM PASSENGER;


29
30 TICKET_NO NAME
31 ----------------- -----------
32 4321 Bharath
33 5432 Sandeep
34 6543 Bhagya
35 7654 Akash
36 8765 Shireesha
37 9876 Anil
0 987 Shiva
38 7 rows selected.
39
40 4. Display the source and destination having journey time more than 10 hours.
41
42 5. Find the ticket numbers of the passengers whose name start with ‘A’ and ends with ‘H’.

43 SQL> SELECT NAME,TICKET_NO FROM PASSENGER WHERE NAME LIKE 'A%h';


44
45 NAME TICKET_NO
46 ---------- -----------------
47 Akash 7654
48 6. Find the names of passengers whose age is between 30 and 45.

49 SQL> SELECT NAME,AGE FROM PASSENGER WHERE AGE BETWEEN 30 AND 45;
50
51 NAME AGE
52 ---------- -----------
53 Akash 40
54 Shireesha 31
55 Anil 35
56
57 7. Display all the passengers names beginning with ‘A’

58 SQL> SELECT NAME FROM PASSENGER WHERE NAME LIKE 'A%';


59
60 NAME
------------
61 Akash
62 Anil

63 8. Display the sorted list of passengers names

64 SQL> SELECT NAME FROM PASSENGER ORDER BY NAME;


65
66 NAME
67 -------------
68 Akash
69 Anil
70 Bhagya
71 Bharath
72 Sandeep
73 Shireesha
74 Shiva
75 7 rows selected.
76
77 9. Display the Bus numbers that travel on Sunday and Wednesday

78 SQL> SELECT BUSNO FROM BUS B,TICKET T WHERE B.SOURCE=T.SOURCE AND


B.DESTINATION=T.DESTINATION AND (TO_CHAR(T.JOURNEY_DATE,'DY')='SUN' OR
TO_CHAR(T.JOURNEY_DATE,'DY')='WED');
79
80 BUSNO
0 -----------
81 2728
82 2714

OR
SQL> SELECT BUSNO,TO_CHAR(JOURNEY_DATE,'DAY') AS DAY FROM BUS B,TICKET T WHERE
B.SOURCE=T.SOURCE AND B.DESTINATION=T.DESTINATION AND (TO_CHAR(JOURNEY_DATE,'DY')='SUN'
OR TO_CHAR(JOURNEY_DATE,'DY')='WED');

BUSNO DAY
----------- -------------------
2728 SUNDAY
2714 WEDNESDAY
83
84 10. Display the details of passengers who are traveling either in AC or NON_AC(Using only IN operator)
11. Write a Query to display the Information present in the Passenger and cancellation tables. Hint: Use UNION Operator.

12. Write a Query to display different travelling options available in British Airways.

SQL> SELECT UNIQUE CLASS FROM BUS;

CLASS
--------
AC
NON-AC

13. Display the number of days in a week on which the 9W01 bus is available.

14. Find number of tickets booked for each PNR_no using GROUP BY CLAUSE. Hint: Use GROUP BY on PNR_No.

15. Find the distinct PNR numbers that are present.

SQL> SELECT DISTINCT PNR_NO FROM PASSENGER;

PNR_NO
-------------
1234
2345
3456
4567
5678
6789
7890

7 rows selected.

16. Find the number of tickets booked in each class where the number of seats is greater than 1. Hint: Use GROUP BY,
WHERE and HAVING CLAUSES.

17. Find the total number of cancelled seats.

SQL> SELECT SUM(NO_OF_SEATS) AS "TOTAL CANCELLED SEATS" FROM CANCELLATION;

TOTAL CANCELLED SEATS


---------------------------------------
7

18. Write a Query to count the number of tickets for the buses, which travelled after the date '14/3/2009'. Hint: Use
HAVING CLAUSES.

SQL> SELECT COUNT(TICKET_NO),JOURNEY_DATE FROM TICKET GROUP BY(JOURNEY_DATE) HAVING


JOURNEY_DATE>'14-Mar-2011';

COUNT(TICKET_NO) JOURNEY_D
------------------------------ -------------------
1 05-JUN-11
VIEWS
TO CREATE A VIEW FOR PASSENGER TABLE
SQL> CREATE VIEW PASSENGER_VIEW(PNR_NO,TICKET_NO,NAME) AS SELECT
PNR_NO,TICKET_NO,NAME FROM PASSENGER;

View created.

SQL> SELECT * FROM PASSENGER_VIEW;

PNR_NO TICKET_NO NAME


------------- ----------------- -----------
1234 4321 Bharath
2345 5432 Sandeep
3456 6543 Bhagya
4567 7654 Akash
5678 8765 Shireesha
6789 9876 Anil
7890 987 Shiva

7 rows selected.

SQL> COMMIT;

Commit complete.

TO CREATE A VIEW FOR RESERVATION TABLE


SQL> CREATE VIEW RESERVATION_VIEW(PNR_NO, JOURNEY_DATE,STATUS) AS SELECT PNR_NO,
JOURNEY_DATE,STATUS FROM RESERVATION WHERE STATUS='Yes';

View created.

SQL> SELECT * FROM RESERVATION_VIEW;

PNR_NO JOURNEY_D STATU


------------ ------------------ -----------
1234 15-DEC-10 Yes
3456 05-JUN-11 Yes
4567 20-DEC-10 Yes
5678 14-JAN-11 Yes

SQL> COMMIT;

Commit complete.

TO CREATE A VIEW FOR TICKET TABLE


SQL> CREATE VIEW TICKET_VIEW(TICKET_NO,JOURNEY_DATE,SOURCE,DESTINATION) AS SELECT
TICKET_NO,T.JOURNEY_DATE,SOURCE,DESTINATION FROM TICKET T,RESERVATION_VIEW R WHERE
T.JOURNEY_DATE=R.JOURNEY_DATE;

View created.

SQL> SELECT * FROM TICKET_VIEW;

TICKET_NO JOURNEY_D SOURCE DESTINATION


----------------- ------------------ ------------- ---------------------
4321 15-DEC-10 Secunderabad Vijayawada
7654 20-DEC-10 Hyderabad Mumbai
8765 14-JAN-11 Secunderabad Guntur
6543 05-JUN-11 Hyderabad Visakhapatnam

SQL> COMMIT;

Commit complete.
PL/SQL PROCEDURE

1. Write a PL/SQL procedure to find the factors of a given number.

SQL>set serveroutput on
SQL>create or replace procedure factors as
2 n number :=&n;
3 i number;
4 begin
5 dbms_output.put_line('The factors of '||n||' are');
6 for i in 1..n loop
7 if(mod(n,i)=0) then
8 dbms_output.put_line(i);
9 end if;
10 end loop;
11 end;
12 /

Enter value for n: 10


old 2: n number :=&n;
new 2: n number :=10;

Procedure created.

SQL> execute factors


The factors of 10 are
1
2
5
10

PL/SQL procedure successfully completed.


2. Write a PL/SQL procedure to check whether the given number is Prime or not.

SQL> set serveroutput on


SQL>create or replace procedure prime as
2 n number :=&n;
3 c number:=0;
4 i number;
5 begin
6 for i in 1..n loop
7 if(mod(n,i)=0) then
8 c:=c+1;
9 end if;
10 end loop;
11 if(c=2) then
12 dbms_output.put_line(n||' is prime number.');
13 else
14 dbms_output.put_line(n||' is not a prime number.');
15 end if;
16 end;
17 /

Enter value for n: 5


old 2: n number :=&n;
new 2: n number :=5;

Procedure created.

SQL> execute prime


5 is prime number.

PL/SQL procedure successfully completed.


3. Write a PL/SQL procedure to display prime numbers up to n.

SQL> set serveroutput on


SQL>create or replace procedure primeseries as
2 n number;
3 c number;
4 i number;
5 j number;
6 begin
7 n:=&n;
8 for i in 1..n loop
9 c:=0;
10 for j in 1..i loop
11 if(mod(i,j)=0) then
12 c:=c+1;
13 end if;
14 end loop;
15 if(c=2) then
16 dbms_output.put_line(i||' ');
17 end if;
18 end loop;
19 end;
20 /

Enter value for n: 25


old 7: n:=&n;
new 7: n:=25;

Procedure created.

SQL> execute primeseries


2
3
5
7
11
13
17
19
23

PL/SQL procedure successfully completed.


4. Write a PL/SQL procedure to display n Prime numbers.

SQL> set serveroutput on


SQL>create or replace procedure primenumbers as
2 n number;
3 c number;
4 i number;
5 j number;
6 a number:=1;
7 begin
8 n:=&n;
9 i:=1;
10 loop
11 c:=0;
12 for j in 1..i loop
13 if(mod(i,j)=0) then
14 c:=c+1;
15 end if;
16 end loop;
17 if(c=2) then
18 dbms_output.put_line(i||' ');
19 a:=a+1;
20 end if;
21 i:=i+1;
22 exit when(a>n);
23 end loop;
24 end;
25 /

Enter value for n: 10


old 8: n:=&n;
new 8: n:=10;

Procedure created.

SQL> execute primenumbers


2
3
5
7
11
13
17
19
23
29

PL/SQL procedure successfully completed.


5. Write a PL/SQL procedure to check whether the given number is Armstrong or not.

SQL> set serveroutput on


SQL>create or replace procedure armstrong as
2 n number;
3 r number;
4 s number:=0;
5 m number;
6 begin
7 n:=&n;
8 m:=n;
9 while(n>0)
10 loop
11 r:=mod(n,10);
12 s:=s+power(r,3);
13 n:=trunc(n/10);
14 end loop;
15 if(s=m) then
16 dbms_output.put_line(m||' is an armstrong');
17 else
18 dbms_output.put_line(m||' is not an armstrong');
19 end if;
20 end;
21 /

Enter value for n: 153


old 7: n:=&n;
new 7: n:=153;

Procedure created.

SQL> execute armstrong


153 is an armstrong

PL/SQL procedure successfully completed.


6. Write a PL/SQL procedure to find the reverse of a given number.

SQL> set serveroutput on


SQL>create or replace procedure reverse as
2 n number;
3 r number;
4 s number:=0;
5 m number;
6 begin
7 n:=&n;
8 m:=n;
9 while(n>0)
10 loop
11 r:=mod(n,10);
12 s:=s*10+r;
13 n:=trunc(n/10);
14 end loop;
15 dbms_output.put_line('The reverse of '||m||' is '||s);
16 end;
17 /

Enter value for n: 801


old 7: n:=&n;
new 7: n:=801;

Procedure created.

SQL> execute reverse


The reverse of 801 is 108

PL/SQL procedure successfully completed.


7. Write a PL/SQL procedure to find the given number is Palindrome or not.

SQL> set serveroutput on


SQL>create or replace procedure numberpalindrome as
2 n number;
3 r number;
4 s number:=0;
5 m number;
6 begin
7 n:=&n;
8 m:=n;
9 while(n>0)
10 loop
11 r:=mod(n,10);
12 s:=s*10+r;
13 n:=trunc(n/10);
14 end loop;
15 if(s=m) then
16 dbms_output.put_line(m||' is a Palindrome');
17 else
18 dbms_output.put_line(m||' is not a Palindrome');
19 end if;
20 end;
21 /

Enter value for n: 242


old 7: n:=&n;
new 7: n:=242;

Procedure created.

SQL> execute numberpalindrome


242 is a Palindrome

PL/SQL procedure successfully completed.


1. PROCEDURE TO GET THE BUS SCHEDULE DETAILS BY PASSING BUSNO

SQL> SET SERVEROUTPUT ON


SQL>CREATE OR REPLACE PROCEDURE BUSINFO(BUSNUMBER NUMBER)
2 AS
3 BUSNO BUS.BUSNO%TYPE;
4 SOURCE BUS.SOURCE%TYPE;
5 DESTINATION BUS.DESTINATION%TYPE;
6 CLASS BUS.CLASS%TYPE;
7 BEGIN
8 SELECT BUSNO, SOURCE, DESTINATION, CLASS
9 INTO BUSNO, SOURCE, DESTINATION, CLASS
10 FROM BUS WHERE BUSNO=BUSNUMBER;
11 DBMS_OUTPUT.PUT_LINE( 'BUSNO: '||BUSNO||', SOURCE: '|| SOURCE||', DESTINATION: '||
12 DESTINATION||', CLASS: '|| CLASS);
13 END;
14 /

Procedure created.

SQL> EXECUTE BUSINFO(2738)


BUSNO: 2738, SOURCE: Secunderabad, DESTINATION: Kakinada, CLASS: AC

PL/SQL procedure successfully completed.


2. Procedure for DML operations (INSERT UPDATE DELETE)

SQL> SET SERVEROUTPUT ON


SQL> CREATE OR REPLACE PROCEDURE DMLOp(dml number)
2 AS
3 BEGIN
4 IF dml=1 then
5 INSERT INTO BUS values(1002,'HYDERABAD','PUNE','AC');
6 elsif dml = 2 then
7 UPDATE BUS set destination = 'MUMBAI' where busno=1002;
8 elsif dml = 3 then
9 DELETE from bus where busno = 1002;
10 end if;
11 end;
12 /

Procedure created.

SQL> EXECUTE DMLOP(1)

PL/SQL procedure successfully completed.

SQL> SELECT * FROM BUS;

BUSNO SOURCE DESTINATION CLASS


----------- ------------------- ---------------------- -------------
1002 HYDERABAD PUNE AC
7202 Secunderabad Guntur NON-AC
2704 Secunderabad Howrah AC
2714 Secunderabad Vijayawada AC
2728 Hyderabad Visakhapatnam NON-AC
2738 Secunderabad Kakinada AC
2702 Hyderabad Mumbai NON-AC

7 rows selected.

SQL> EXECUTE DMLOP(2)

PL/SQL procedure successfully completed.

SQL> SELECT * FROM BUS;

BUSNO SOURCE DESTINATION CLASS


------------ ------------------ --------------------- ----------------
1002 HYD MUMBAI AC
7202 Secunderabad Guntur NON-AC
2704 Secunderabad Howrah AC
2714 Secunderabad Vijayawada AC
2728 Hyderabad Visakhapatnam NON-AC
2738 Secunderabad Kakinada AC
2702 Hyderabad Mumbai NON-AC

7 rows selected.
SQL> EXECUTE DMLOP(3)

PL/SQL procedure successfully completed.

SQL> SELECT * FROM BUS;

BUSNO SOURCE DESTINATION CLASS


----------- --------------- ---------------------- ----------
7202 Secunderabad Guntur NON-AC
2704 Secunderabad Howrah AC
2714 Secunderabad Vijayawada AC
2728 Hyderabad Visakhapatnam NON-AC
2738 Secunderabad Kakinada AC
2702 Hyderabad Mumbai NON-AC

6 rows selected.
3. Passenger grades according to age(Junior <9,Adult <40,Senior>=40)

SQL> SET SERVEROUTPUT ON


SQL> CREATE OR REPLACE PROCEDURE AGEGROUP(age number)
2 AS
3 BEGIN
4 if age<=9 then
5 dbms_output.put_line('Passenger is Junior');
6 elsif age between 9 and 39 then
7 dbms_output.put_line('Passenger is Adult');
8 elsif age >=40 then
9 dbms_output.put_line('Passenger is Senior');
10 end if;
11 end;
12 /

Procedure created.

SQL> EXECUTE AGEGROUP(21)


Passenger is Adult

PL/SQL procedure successfully completed.


CURSOR
1. Basic CURSOR to display first row stored in the cursor from passenger table

SQL> SET SERVEROUTPUT ON


SQL> DECLARE
2 pass_rec Passenger%rowtype;
3 CURSOR pass_cur IS
4 SELECT *
5 FROM
6 PASSENGER;
7 BEGIN
8 OPEN pass_cur;
9 FETCH pass_cur INTO pass_rec;
10 dbms_output.put_line ('PNR_NO :'||pass_rec.pnr_no ||' TICKET_NO :' || pass_rec.ticket_no ||' NAME :' ||
pass_rec.name ||' AGE :' || pass_rec.age);
11 CLOSE pass_cur;
12 END;
13 /

PNR_NO :1234 TICKET_NO :4321 NAME :Bharath AGE :23

PL/SQL procedure successfully completed.


2. Basic CURSOR to display first row stored in the cursor from ticket table

SQL> SET SERVEROUTPUT ON


SQL>DECLARE
2 tick_rec TICKET%rowtype;
3 CURSOR tick_cur IS
4 SELECT *
5 FROM
6 TICKET;
7 BEGIN
8 OPEN tick_cur;
9 FETCH tick_cur INTO tick_rec;
10 dbms_output.put_line ('TICKETNUMBER: ' || tick_rec.ticket_no || ' ' || 'JOURNEYDATE: ' ||
tick_rec.journey_date || ' ' || 'AGE: '|| tick_rec.age);
11 CLOSE tick_cur;
12 END;
13 /

TICKETNUMBER: 4321 JOURNEYDATE: 15-DEC-10 AGE: 23

PL/SQL procedure successfully completed.


3. TO FETCH ALL THE BUS DETAILS ONE ROW AT A TIME

SQL> SET SERVEROUTPUT ON


SQL> Declare
2 CURSOR c_bus IS
3 select busno, source, destination,class from bus;
4 v_busno bus.busno%type;
5 v_source bus.source%type;
6 v_destination bus.destination%type;
7 v_class bus.class%type;
8 Begin
9 OPEN c_bus;
10 Dbms_output.put_line('BUSNO SOURCE DESTINATION CLASS');
11 Dbms_output.put_line('----------- ------------- --------------------- ----------');
12 Loop
13 FETCH c_bus into v_busno,v_source,v_destination,v_class;
14 Exit when c_bus%NOTFOUND;
15 Dbms_output.put_line(v_busno|| ' ' || v_source|| ' ' || v_destination|| ' ' || v_class );
16 End loop;
17 CLOSE c_bus;
18 End;
19 /

BUSNO SOURCE DESTINATION CLASS


----------- ------------------- ---------------------- ------------------
7202 Secunderabad Guntur NON-AC
2704 Secunderabad Howrah AC
2714 Secunderabad Vijayawada AC
2728 Hyderabad Visakhapatnam NON-AC
2738 Secunderabad Kakinada AC
2702 Hyderabad Mumbai NON-AC

PL/SQL procedure successfully completed.


4.TO FETCH ALL THE BUS DETAILS ONE COLUMN AT A TIME

SQL> SET SERVEROUTPUT ON


SQL>Declare
2 CURSOR c_bus IS
3 select busno, source, destination,class from bus;
4 v_busno bus.busno%type;
5 v_source bus.source%type;
6 v_destination bus.destination%type;
7 v_class bus.class%type;
8 Begin
9 OPEN c_bus;
10 Loop
11 FETCH c_bus into v_busno,v_source,v_destination,v_class;
12 Exit when c_bus%NOTFOUND;
13 Dbms_output.put_line('------------------');
14 Dbms_output.put_line(v_busno);
15 Dbms_output.put_line(v_source);
16 Dbms_output.put_line(v_destination);
17 Dbms_output.put_line(v_class);
18 End loop;
19 CLOSE c_bus;
20 End;
21 /

------------------
7202
Secunderabad
Guntur
NON-AC
------------------
2704
Secunderabad
Howrah
AC
------------------
2714
Secunderabad
Vijayawada
AC
------------------
2728
Hyderabad
Visakhapatnam
NON-AC
------------------
2738
Secunderabad
Kakinada
AC
------------------
2702
Hyderabad
Mumbai
NON-AC

PL/SQL procedure successfully completed.


5. TO DISPLAY THE ENTIRE PASSENGER DETAILS OF THE CANCELLED TICKETS.

SQL>SET SEVEROUTPUT ON
SQL>Declare
2 CURSOR C_CANCELLATION IS
3 SELECT P.NAME, P.AGE, P.SEX, C.ADDRESS, C.CONTACT_NO
4 FROM PASSENGER P,
5 CANCELLATION C
6 WHERE P.PNR_NO=C.PNR_NO;
7 NAME PASSENGER.NAME%TYPE;
8 AGE PASSENGER.AGE%TYPE;
9 SEX PASSENGER.SEX%TYPE;
10 ADDRESS CANCELLATION.ADDRESS%TYPE;
11 CONTACT CANCELLATION.CONTACT_NO%TYPE;
12 Begin
13 OPEN C_CANCELLATION;
14 Loop
15 FETCH C_CANCELLATION into NAME,AGE,SEX,ADDRESS,CONTACT;
16 Exit when C_CANCELLATION%NOTFOUND;
17 DBMS_OUTPUT.PUT_LINE('NAME: '||NAME||', AGE: '|| AGE||', SEX: '|| SEX||', ADDRESS: '||
ADDRESS||', CONTACT: '|| CONTACT);
18 End loop;
19 CLOSE C_CANCELLATION;
20 End;
21 /

NAME: Anil, AGE: 35, SEX: Male, ADDRESS: Warangal, CONTACT: 9885554321
NAME: Shiva, AGE: 25, SEX: Male, ADDRESS: Ongole, CONTACT: 9908109595

PL/SQL procedure successfully completed.

You might also like