1.Write a
program to print the following format
WELCOME TO
PL/SQL PROGRAMMING
BEGIN
DBMS_OUTPUT.PUT_LINE('WELCOME
TO PL/SQL PROGRAMMING');
END;
/
2.Write a
program to print the numbers from 1 to 100
DECLARE
N
NUMBER(3):=1;
V
VARCHAR2(1000);
BEGIN
WHILE N
<=1000
LOOP
V:=V||''||N;
N:=N+1;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
END;
/
3.write a
program to print the even numbers from 1 to 100
DECLARE
N
NUMBER(3):=0;
BEGIN
WHILE N
<=100
LOOP
N:=N+2;
DBMS_OUTPUT.PUT_LINE(N);
END LOOP;
END;
/
4.Write a
program to print the odd numbers from 1 to 100
DECLARE
N
NUMBER(3):=1;
BEGIN
WHILE N
<=100
LOOP
N:=N+2;
DBMS_OUTPUT.PUT_LINE(N);
END LOOP;
END;
/
5.write a
program for multiplication table
DECLARE
A
NUMBER(2):=&A;
B
NUMBER(2):=1;
C
NUMBER(3);
BEGIN
WHILE B
<=10
LOOP
C:=A*B;
DBMS_OUTPUT.PUT_LINE(A||'*'||B||'='||C);
B:=B+1;
END LOOP;
END;
/
6.write a
program to find the sum of numbers from 1 to 100
DECLARE
N
NUMBER(3):=1;
S
NUMBER(4):=0;
BEGIN
WHILE N
<=100
LOOP
S:=S+N;
N:=N+1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('THE
SUM OF 1 TO 100 IS '||S);
END;
/
7.Write a
program to find the sum of all odd numbers from 1 to 100
DECLARE
N
NUMBER(3):=1;
S NUMBER(4):=0;
BEGIN
WHILE N
<=100
LOOP
S:=S+N;
N:=N+2;
END LOOP;
DBMS_OUTPUT.PUT_LINE('THE
SUM OF 1 TO 100 ODD NUMBERS IS '||S);
END;
/
8.Write a
program to find the sum of all even numbers from 1 to 100
DECLARE
N
NUMBER(3):=0;
S
NUMBER(4):=0;
BEGIN
WHILE N
<=100
LOOP
S:=S+N;
N:=N+2;
END LOOP;
DBMS_OUTPUT.PUT_LINE('THE
SUM OF 1 TO 100 EVEN NUMBERS IS '||S);
END;
/
9.Write a
program to accept a number and find how many digits it contain
DECLARE
N
NUMBER(5):=&N;
CNT
NUMBER:=0;
R
NUMBER(2):=0;
BEGIN
WHILE N
!=0
LOOP
R:=MOD(N,10);
CNT:=CNT+1;
N:=TRUNC(N/10);
END LOOP;
DBMS_OUTPUT.PUT_LINE('NUMBER
OF DIGITS OF GIVEN NUMBER IS '||CNT);
END;
/
10.Write a
program to accept a number and find the sum of the digits
DECLARE
N
NUMBER(5):=&N;
S
NUMBER:=0;
R
NUMBER(2):=0;
BEGIN
WHILE N
!=0
LOOP
R:=MOD(N,10);
S:=S+R;
N:=TRUNC(N/10);
END LOOP;
DBMS_OUTPUT.PUT_LINE('SUM
OF DIGITS OF GIVEN NUMBER IS '||S);
END;
/
11.Write a
program to accept a number and print it in reverse order
DECLARE
N
NUMBER(5):=&N;
REV
NUMBER(5):=0;
R
NUMBER(5):=0;
BEGIN
WHILE N
!=0
LOOP
R:=MOD(N,10);
REV:=REV*10+R;
N:=TRUNC(N/10);
END LOOP;
DBMS_OUTPUT.PUT_LINE('THE
REVERSE OF A GIVEN NUMBER IS '||REV);
END;
/
12.Write a
program to accept a no and check whether it is Armstrong number or not
13.Write
a porgram to generate all the Armstrong numbers from 1 to 100
14.Write a
program to generate all prime numbers between 1 to 100
15.Write a
program to aceept a number and check whether it is prime number or not
16.Write a
program to display the fibonacci series from 1 to 10
17.Write a
program to aceept a number and print it in binary format
18.Write a
program to accept a number and find the factorial of the number
19.Find
the factorials of numbers from 1 to 10
DECLARE
FACT
NUMBER:=1;
V
VARCHAR2(100);
BEGIN
FOR I IN
1..10
LOOP
FOR J IN
1..I
LOOP
FACT:=FACT*J;
V:=J||'*'||V;
END LOOP;
DBMS_OUTPUT.PUT_LINE(RTRIM(V,'*')||'='||FACT);
FACT:=1;
V:=NULL;
END LOOP;
END;
/
20.Write a
program to aceept a number and display it in the Octal format
DECLARE
N
NUMBER(2):=&N;
R
NUMBER(2);
V
VARCHAR2(1000);
BEGIN
WHILE
N>0
LOOP
R:=MOD(N,8);
V:=R||V;
N:=TRUNC(N/8);
END LOOP;
DBMS_OUTPUT.PUT_LINE('OCTAL
OF A GIVEN NUMBER IS '||V);
END;
/
21.Write a
program to accept a number and print the multiplication tables upto soo
DECLARE
N
NUMBER(2):=&N;
M NUMBER;
BEGIN
FOR I IN
N..N+5
LOOP
FOR J IN
1..10
LOOP
M:=I*J;
DBMS_OUTPUT.PUT_LINE(I||'*'||J||'='||M);
END LOOP;
DBMS_OUTPUT.PUT_LINE('*********************');
END LOOP;
END;
/
22.Write a
program to accept the temp in Centigrade and convert it into
Fahrenheit(c=F-32/1.8)
DECLARE
C
NUMBER:=&C;
F NUMBER;
BEGIN
F:=C*1.8+32;
DBMS_OUTPUT.PUT_LINE('THE
FARENHETT OF GIVEN OC IS '||F);
END;
/
23.Write a
program to calculate the area of a triangle by accepting the 3 sides
(s=(a+b+c)/2
area=sqrt(s*(s-a)*(s-b)*(s-c)))
DECLARE
S NUMBER;
A
NUMBER:=&A;
B
NUMBER:=&B;
C
NUMBER:=&C;
AREA
NUMBER(7,2);
BEGIN
S:=(A+B+C)/2;
AREA:=SQRT(S*(S-A)*(S-B)*(S-C));
DBMS_OUTPUT.PUT_LINE('THE
AREA OF TRIANGLE IS '||AREA);
END;
/
24.Write a
program to calculate the area of a circle by accepting the radius and unit of
measure Area=PI*r2
DECLARE
R
NUMBER:=&R;
AREA
NUMBER(7,2);
BEGIN
AREA:=(22/7)*R*R;
DBMS_OUTPUT.PUT_LINE('THE
AREA OF CIRCLE IS '||AREA);
END;
/
25.Write a
program to calculate the perimeter of a circle(perimeter=2*PI*r)
DECLARE
R
NUMBER:=&R;
PERIMETER
NUMBER(7,2);
BEGIN
PERIMETER:=2*(22/7)*R;
DBMS_OUTPUT.PUT_LINE('THE
PERIMETER OF CIRCLE IS '||PERIMETER);
END;
/
26.Write a
program to accept the 3 sides of the triangle and display the type of triangle
DECLARE
A
NUMBER(4,2):=&A;
B
NUMBER(4,2):=&B;
C
NUMBER(4,2):=&C;
PERIMETER
NUMBER(7,2);
BEGIN
IF (A=B
AND B=C AND C=A) THEN
DBMS_OUTPUT.PUT_LINE('EQUILATERAL
TRIANGLE');
ELSIF A=B OR
A=C OR C=B THEN
DBMS_OUTPUT.PUT_LINE('ISOSOCELESS
TRIANGLE');
ELSE
DBMS_OUTPUT.PUT_LINE('SCALEN
TRIANGLE');
END IF;
END;
/
27.Write a
program accept the value of A,B&C display which is greater
DECLARE
A
NUMBER(4,2):=&A;
B
NUMBER(4,2):=&B;
C
NUMBER(4,2):=&C;
BEGIN
IF (A>B
AND A>C) THEN
DBMS_OUTPUT.PUT_LINE('A
IS GREATER '||''||A);
ELSIF
B>C THEN
DBMS_OUTPUT.PUT_LINE('B
IS GREATE '||''||B);
ELSE
DBMS_OUTPUT.PUT_LINE('C
IS GREATER '||''||C);
END IF;
END;
/
28.Write a
program accept a string and check whether it is palindrome or not
DECLARE
S
VARCHAR2(10):='&S';
L
VARCHAR2(20);
TEMP
VARCHAR2(10);
BEGIN
FOR I IN
REVERSE 1..LENGTH(S)
LOOP
L:=SUBSTR(S,I,1);
TEMP:=TEMP||''||L;
END LOOP;
IF TEMP=S
THEN
DBMS_OUTPUT.PUT_LINE(TEMP
||''||' IS PALINDROME');
ELSE
DBMS_OUTPUT.PUT_LINE(TEMP
||''||' IS NOT PALINDROME');
END IF;
END;
/
29.Write a
program aceepts the value of A,B and swap the nos and print the values
DECLARE
A
NUMBER(2):=&A;
B
NUMBER(2):=&B;
FLAG
NUMBER(2);
BEGIN
FLAG:=A;
A:=B;
B:=FLAG;
DBMS_OUTPUT.PUT_LINE('A
'||'= '||A||' AND '||''||'B '||'= '||B);
END;
/
30.Write a
program to accept the values of A , B and swap the numbers and print the values
without using third variable
DECLARE
A
NUMBER(2):=&A;
B
NUMBER(2):=&B;
FLAG
NUMBER(2);
BEGIN
FLAG:=A;
A:=B;
B:=FLAG;
DBMS_OUTPUT.PUT_LINE('A
'||'= '||A||' AND '||''||'B '||'= '||B);
END;
/
31.Write a
program to accept the side of a square and calculate the area area =a2
DECLARE
A
NUMBER:=&A;
AREA
NUMBER(5);
BEGIN
AREA:=A*A;
DBMS_OUTPUT.PUT_LINE('AREA
OF A SQUARE IS '||''||AREA);
END;
/
32.Write a
program to accept principle amount ,rate,time calculate the simple interest
si=(p*t*r)/100
DECLARE
P
NUMBER(6,2):=&P;
R
NUMBER(6,2):=&R;
T
NUMBER(6,2):=&T;
SI
NUMBER(6,2);
BEGIN
SI:=(P*R*T)/100;
DBMS_OUTPUT.PUT_LINE('SIMPLE
INTEREST IS '||''||SI);
END;
/
33.Erite a
program to aceept the principle amount,rate,time and find the compound interest
ci=p*(1+r/100)n
DECLARE
P
NUMBER(6,2):=&P;
R
NUMBER(6,2):=&R;
T
NUMBER(6,2):=&T;
CI
NUMBER(6,2);
BEGIN
CI:=P*POWER(1+(R/100),T);
DBMS_OUTPUT.PUT_LINE('COMPOUND
INTEREST IS '||CI);
END;
/
34.WAP to
calculate the sum of 1!+2!+......+n!
DECLARE
N
NUMBER:=&N;
S
NUMBER:=0;
F
NUMBER:=1;
BEGIN
FOR I IN
1..N
LOOP
FOR J IN
1..I
LOOP
F:=F*J;
END LOOP;
S:=S+F;
F:=1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('SUM
OF FACT IS '||S);
END;
/
35.WAP to
calculate the sum of 1+1/2+1/3+......+1/n
DECLARE
N
NUMBER:=&N;
A NUMBER;
S
NUMBER(6,2):=0;
BEGIN
FOR I IN
1..N
LOOP
A:=1/I;
S:=S+A;
END LOOP;
DBMS_OUTPUT.PUT_LINE('SUM
OF NO ARE '||S);
END;
/
36.WAP to
calculate the sum of 1/1!+1/2!+.....+1/n!
DECLARE
N
NUMBER:=&N;
S
NUMBER(6,2):=0;
F
NUMBER:=1;
BEGIN
FOR I IN
1..N
LOOP
FOR J IN
1..I
LOOP
F:=F*J;
END LOOP;
S:=S+(1/F);
END LOOP;
DBMS_OUTPUT.PUT_LINE('SUM
IS '||S);
END;
/
37.WAP to
calculate the sum of 1/1!+2/2!+......+n/n!
DECLARE
N
NUMBER(4):=&N;
S
NUMBER(6,2):=0;
F
NUMBER(4):=1;
BEGIN
FOR I IN
1..N
LOOP
FOR J IN
1..I
LOOP
F:=F*J;
END LOOP;
S:=S+(I/F);
END LOOP;
DBMS_OUTPUT.PUT_LINE('SUM
OF FACT IS '||S);
END;
/
38.Write a
program to display the months between two dates of a year
DECLARE
D
DATE:='&D';
D1
DATE:='&D1';
BEGIN
WHILE D
< D1
LOOP
DBMS_OUTPUT.PUT_LINE(TO_CHAR(D,'MONTH'));
D:=ADD_MONTHS(D,1);
END LOOP;
END;
/
39.Write a
program to accept the date and print the weekdays from the given date
DECLARE
D
DATE:='&D';
WD DATE;
BEGIN
WD:=D+6;
WHILE D
<= WD
LOOP
DBMS_OUTPUT.PUT_LINE(TO_CHAR(D,'DAY'));
D:=D+1;
END LOOP;
END;
/
40.WAP to
accept the date and print the weekdays from the given date along with date
format
DECLARE
D
DATE:='&D';
WD DATE;
BEGIN
WD:=D+6;
WHILE D
<= WD
LOOP
DBMS_OUTPUT.PUT_LINE(TO_CHAR(D,'DAY')||D);
D:=D+1;
END LOOP;
END;
/
41.Writa a
program to accept a year and check whether it is leap year or not
DECLARE
Y
NUMBER:=&Y;
R NUMBER;
BEGIN
IF
MOD(Y,4)=0 AND MOD(Y,100)!=0 OR MOD(Y,400)=0
THEN
DBMS_OUTPUT.PUT_LINE(Y
||' IS A LEAP YEAR');
ELSE
DBMS_OUTPUT.PUT_LINE(Y
||' IS NOT A LEAP YEAR');
END IF;
END;
/
42.Write a
program to accept a year and display all sundays along with the date
DECLARE
Y
NUMBER(4):=&YYYY;
A DATE;
B DATE;
I
NUMBER(2):=1;
BEGIN
A:=TO_DATE('01-JAN-'||Y,'DD-MON-YYYY');
B:=LAST_DAY(ADD_MONTHS(A,11));
WHILE A
<= B
LOOP
IF
TO_CHAR(A,'D')=1 THEN
DBMS_OUTPUT.PUT_LINE(LPAD(I,2,'0')||'-'||UPPER(TO_CHAR(A,'DAY'))||A);
I:=I+1;
END IF;
A:=A+1;
END LOOP;
END;
/
43.WAP to
accept a string and count how many vowels present in the string
DECLARE
V
VARCHAR2(300):='&V';
CNT
NUMBER(5):=0;
C CHAR;
BEGIN
FOR I IN
1..LENGTH(V)
LOOP
C:=SUBSTR(V,I,1);
IF C IN
('A','E','I','O','U') THEN
CNT:=CNT+1;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('NO
OF VOWELS PRESENT = '||CNT);
END;
/
44.Write
a program to accept a year and check whether it is leap year or not . If it is
leap year
then display how many sundays present in that year
DECLARE
D
DATE:='&YEAR';
Y
VARCHAR2(20);
CNT
NUMBER(5):=0;
V
VARCHAR2(20);
BEGIN
Y:=TO_CHAR(D,'YYYY');
D:=TO_DATE('01-JAN-'||Y);
IF
MOD(Y,4)=0 AND MOD(Y,100)!=0 OR MOD(Y,400)=0 THEN
FOR I IN
1..366
LOOP
V:=TO_CHAR(D,'D');
IF V=1
THEN
CNT:=CNT+1;
END IF;
D:=D+1;
DBMS_OUTPUT.PUT_LINE('NO
OF VOWELS PRESENT = '||CNT);
END LOOP;
END;
/
45.Write a
program to accept a char and check it is vowel or consonant
DECLARE
C
CHAR:='&C';
BEGIN
IF C='A'
OR C='E' OR C='I' OR C='O' OR C='U' THEN
DBMS_OUTPUT.PUT_LINE('VOWEL');
ELSE
DBMS_OUTPUT.PUT_LINE('CONSONANT');
END IF;
END;
/
46.WAP to
accept A,B,C & D check whether it is Ramanujan number or not
DECLARE
A
NUMBER:=&A;
B
NUMBER:=&B;
C
NUMBER:=&C;
D
NUMBER:=&D;
BEGIN
IF
POWER(A,3)+POWER(B,3)=POWER(C,3)+POWER(D,3)
THEN
DBMS_OUTPUT.PUT_LINE(A||CHR(179)||'+'||B||CHR(179)||'='||C||CHR(179)||'+'||D||CHR(179));
ELSE
DBMS_OUTPUT.PUT_LINE(A||CHR(179)||'+'||B||CHR(179)||'!='||C||CHR(179)||'+'||D||CHR(179));
END IF;
END;
/
47.WAP to
accept the CMR & LMR & find out the total bill amount
i)0-100
units Rs.50 per unit
ii)101-200n
units Rs.o.25 per unit
iii)>200
units Rs.1.25 per unit
DECLARE
LMR
NUMBER(5):=&LMR;
CMR
NUMBER(5):=&CMR;
TOT
NUMBER(5):=0;
BILL
NUMBER(7,2):=0;
BEGIN
TOT:=CMR-LMR;
IF TOT
<= 100 THEN
BILL:=TOT*.50;
ELSIF TOT
> 100 AND TOT <= 200 THEN
BILL:=(100*.50)+((TOT-100)*.75);
ELSE
BILL:=(100*.50)+(100*.75)+(TOT-200)*1.25;
END IF;
DBMS_OUTPUT.PUT_LINE('TOTAL
UNIT CONSUMED '||TOT);
DBMS_OUTPUT.PUT_LINE('TOTAL
BILL AMOUNT '||BILL);
END;
/
48.WAP or
accept marks of 3 subject as i/p and calculate the total marks and division of
a student
i) If
totmark>=60 then division is First
ii) If
totmark <60 and totmark>=50 then division is second
iii) If
totmark< 50 and >=35 then division is third
iv) If
totmark< 35 then fail
DECLARE
M1
NUMBER(2):=&M1;
M2
NUMBER(2):=&M2;
M3
NUMBER(2):=&M3;
TOTMARK
NUMBER(5,2);
AVE
NUMBER(5,2):=0;
BEGIN
TOTMARK:=M1+M2+M3;
AVE:=TOTMARK/3;
IF
AVE>=60 THEN
DBMS_OUTPUT.PUT_LINE('THE
DIVISION IS FIRST '||AVE);
ELSIF
AVE<60 AND AVE>=50 THEN
DBMS_OUTPUT.PUT_LINE('THE
DIVISION IS SECOND '||AVE);
ELSIF
AVE<50 AND AVE>=35 THEN
DBMS_OUTPUT.PUT_LINE('THE
DIVISION IS THIRD '||AVE);
ELSE
DBMS_OUTPUT.PUT_LINE('FAIL
'||AVE);
END IF;
END;
/
49.WAP to
accept a number and print its multiplication table horinzontally
DECLARE
J
NUMBER:=&J;
V
VARCHAR2(1000);
K
NUMBER(3);
BEGIN
FOR I IN
1..10
LOOP
K:=J*I;
V:=V||J||'*'||I||'='||K||'
';
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
END;
/
50.WAP to
accept a string and print it in reverse order
DECLARE
STR
VARCHAR2(100):='&sTR';
STR1
VARCHAR2(100);
N
NUMBER(5);
L
VARCHAR2(20);
BEGIN
N:=LENGTH(STR);
FOR I IN
1..N
LOOP
L:=SUBSTR(STR,I,1);
STR1:=L||STR1;
END LOOP;
DBMS_OUTPUT.PUT_LINE(STR1);
END;
/
51.Write a
program to accept a number and find out the sum of first and last digits
DECLARE
A
NUMBER(4):=&A;
B
NUMBER(5):=0;
C
NUMBER(5):=0;
S
NUMBER(5);
BEGIN
IF A>9
THEN
C:=SUBSTR(A,1,1);
B:=SUBSTR(A,LENGTH(A),1);
S:=B+C;
ELSE
S:=A;
END IF;
DBMS_OUTPUT.PUT_LINE('SUM
OF FIRST AND LAST DIGIT IS '||S);
END;
/
52.WAP to
accept the basic salary and find out the ta,da,hra,lic and gs
i)ta 20%
of basic, da 10% of basic, hra 30% of basic, lic 5% of basic
DECLARE
BS
NUMBER(6,2):=&BS;
TA
NUMBER(6,2);
DA
NUMBER(6,2);
HRA
NUMBER(6,2);
GS
NUMBER(6,2);
LIC
NUMBER(6,2);
NS
NUMBER(8,2);
BEGIN
TA:=BS*(20/100);
HRA:=BS*(30/100);
DA:=BS*(10/100);
LIC:=BS*(5/100);
GS:=TA+HRA+DA;
NS:=GS-LIC;
DBMS_OUTPUT.PUT_LINE('EMPLOYEE
BS IS '||BS);
DBMS_OUTPUT.PUT_LINE('GROSS
SALARY IS '||GS);
DBMS_OUTPUT.PUT_LINE('NET
SALARY IS '||NS);
END;
/
53.WAP to
accept the length and breadth of a rectangle and find out the perimeter
DECLARE
L
NUMBER(4,2):=&L;
B
NUMBER(4,2):=&B;
A
NUMBER(4,2);
BEGIN
A:=2*(L+B);
DBMS_OUTPUT.PUT_LINE('THE
PERIMETER OF RECTANGLE IS '||A);
END;
/
54.WAP to
accept the cost price and selling price of an item and find the loss or profit
DECLARE
CP
NUMBER(25,2):=&CP;
SP
NUMBER(25,2):=&SP;
AMT
NUMBER(7,2);
BEGIN
IF CP <
SP THEN
AMT:=SP-CP;
DBMS_OUTPUT.PUT_LINE('PROFIT
IS '||AMT);
ELSE
AMT:=CP-SP;
DBMS_OUTPUT.PUT_LINE('LOSS
IS '||AMT);
END IF;
END;
/
55.Writ a
program to generate the following series
53 53 53
53 53
43 43 43
43
33 33 33
23 23
13
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
REVERSE 1..5
LOOP
FOR J IN
1..I
LOOP
V:=V||I||CHR(179);
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
56.WAP to
accept a no in binary format and print it in decimal format
DECLARE
N
VARCHAR2(20):=&N;
PRO
NUMBER(10,4):=0;
L
VARCHAR2(10);
BEGIN
FOR I IN
1..LENGTH(N)
LOOP
L:=SUBSTR(N,I,1);
PRO:=PRO+L*POWER(2,LENGTH(N)-I);
END LOOP;
DBMS_OUTPUT.PUT_LINE('THE
DECIMAL NUMBER IS '||PRO);
END;
/
57.WAP to
accept two nos and input and find one no is raised to another one (without
using any function)
DECLARE
A
NUMBER:=&A;
B
NUMBER:=&B;
R
NUMBER:=1;
BEGIN
FOR I IN
1..B
LOOP
R:=R*A;
END LOOP;
DBMS_OUTPUT.PUT_LINE('A
RAISED POWER B IS '||R);
END;
/
58.WAP to
accept a sentence and count the no of chars in that sentence
DECLARE
STR
VARCHAR2(100):='&STR';
NO
NUMBER(5):=0;
I NUMBER;
BEGIN
I:=INSTR(STR,'.');
DBMS_OUTPUT.PUT_LINE('NO
OF CHAR IS '||I);
END;
/
59.WAP to
accept two strings and display the large one among those
DECLARE
STR1
VARCHAR2(100):='&STR1';
STR2
VARCHAR2(100):='&STR2';
BEGIN
IF
LENGTH(STR1) > LENGTH(STR2) THEN
DBMS_OUTPUT.PUT_LINE(STR1
||' IS GREATER');
ELSIF
LENGTH(STR1) < LENGTH(STR2) THEN
DBMS_OUTPUT.PUT_LINE(STR2
||' IS GREATER');
ELSE
DBMS_OUTPUT.PUT_LINE('BOTH
STRINGS ARE EQUAL');
END IF;
END;
/
60.WAP to
display all the nos whose sum of digits is 9 from 1 to 9999
DECLARE
N NUMBER;
M NUMBER;
S
NUMBER:=0;
BEGIN
FOR I IN
1..999
LOOP
N:=I;
WHILE
N>0
LOOP
M:=MOD(N,10);
S:=S+M;
N:=TRUNC(N/10);
END LOOP;
IF S=9
THEN
DBMS_OUTPUT.PUT_LINE(I||'
');
END IF;
S:=0;
END LOOP;
END;
/
61.WAP to accept a no and find the sum in a single digit
DECLARE
N
NUMBER(4):=&N;
S
NUMBER(10):=0;
BEGIN
WHILE
LENGTH(N)>1
LOOP
FOR I IN
1..LENGTH(N)
LOOP
S:=S+SUBSTR(N,I,1);
END LOOP;
N:=S;
S:=0;
END LOOP;
DBMS_OUTPUT.PUT_LINE('THE
SUM IN SINGLE DIGIT IS '||N);
END;
/
62.Enter the no of days and find out the no of years and no of days and
months
DECLARE
D
NUMBER:=&D;
Y NUMBER;
M NUMBER;
BEGIN
Y:=TRUNC(D/365);
M:=TRUNC(MOD(D,365)/30);
D:=MOD(MOD(D,365),30);
DBMS_OUTPUT.PUT_LINE(Y||'
YEARS '||M||' MONTHS '||D||' DAYS');
END;
/
63.WAP to accept the date and print all the weekdays along with the given
date
DECLARE
D
DATE:='&D';
V
VARCHAR2(20);
BEGIN
FOR I IN
1..7
LOOP
V:=TO_CHAR(D,'DAY')||D;
DBMS_OUTPUT.PUT_LINE(V);
D:=D+1;
END LOOP;
END;
/
64.WAP while purchasing certain items,discount of each is as follows
i) If qty
purchased > 1000 discount is 20%
ii) If the
qty and price per item are i/p then calculate the expenditure
DECLARE
QTY
NUMBER(5):=&QTY;
UP
NUMBER(6,2):=&UP;
DIS
NUMBER(6,2):=0;
TAMT
NUMBER(10,2);
BILL
NUMBER(10,2);
BEGIN
BILL:=QTY*UP;
IF BILL
> 1000 THEN
DIS:=BILL*20/1000;
END IF;
TAMT:=BILL-DIS;
DBMS_OUTPUT.PUT_LINE('THE
TOTAL AMOUNT IS '||TAMT);
END;
/
65.Write a program to accept a string and count the no of individual chars
DECLARE
V
VARCHAR2(100):='&V';
V1
VARCHAR2(100);
LB NUMBER;
LA NUMBER;
DIFF
NUMBER;
C CHAR;
N
NUMBER(5):=0;
BEGIN
V1:=V;
WHILE
LENGTH(V1)>0
LOOP
C:=SUBSTR(V1,1,1);
LB:=LENGTH(V1);
V1:=REPLACE(V1,C);
LA:=NVL(LENGTH(V1),0);
DIFF:=LB-LA;
IF
ASCII(C)=32 THEN
DBMS_OUTPUT.PUT_LINE('SPACE'||'
EXISTS '||DIFF||' TIMES');
ELSE
DBMS_OUTPUT.PUT_LINE(C||'
EXISTS '||DIFF||' TIMES');
END IF;
N:=N+DIFF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('TOTAL
LENGTH OF THE GIVEN STRING '||V||'='||N);
END;
/
66.Write a program to display all combination of 1,2,&3
BEGIN
FOR I IN
1..3
LOOP
FOR J IN
1..3
LOOP
FOR K IN
1..3
LOOP
DBMS_OUTPUT.PUT_LINE(I||J||K);
END LOOP;
END LOOP;
END LOOP;
END;
/
67.Write a program to find out the series 12+22+32+42+....++n2
DECLARE
N
NUMBER:=&N;
A
NUMBER:=1;
B
NUMBER:=2;
C
NUMBER:=0;
D
NUMBER:=0;
S
NUMBER:=0;
BEGIN
WHILE
A<=N
LOOP
C:=C+A*A;
A:=A+2;
END LOOP;
WHILE
B<=N
LOOP
D:=D+B*B;
B:=B+2;
END LOOP;
S:=C-D;
DBMS_OUTPUT.PUT_LINE('RESULT
IS '||S);
END;
/
68.Write a program to accep the time in HH & MIN format and find the
total senconds
DECLARE
H
NUMBER:=&HOUR;
M
NUMBER:=&MINUTE;
S
NUMBER(10):=0;
BEGIN
S:=(H*60*60)+(M*60);
DBMS_OUTPUT.PUT_LINE(H||'
HOURS '||M||' MINUTES '||'IS'||S||' SECONDS');
END;
/
69.WAP to
accept the distance between two cities in km and convert into mts ,cm & ft
DECLARE
D
NUMBER:=&D;
M
NUMBER:=0;
CM
NUMBER:=0;
FT
NUMBER:=0;
BEGIN
M:=D*1000;
CM:=M*100;
FT:=ROUND(CM/12.3);
DBMS_OUTPUT.PUT_LINE('DISTANCE
IN METERS IS '||M);
DBMS_OUTPUT.PUT_LINE('DISTANCE
IN CENTIMETERS IS '||CM);
DBMS_OUTPUT.PUT_LINE('DISTANCE
IN FOOT IS '||FT);
END;
/
70.Write a
program to find the series x+x2/2!+x3/3!+.....+xn/n!
DECLARE
N
NUMBER:=&N;
X
NUMBER:=&X;
S
NUMBER:=0;
F
NUMBER:=1;
BEGIN
FOR I IN
1..N
LOOP
FOR J IN
1..I
LOOP
F:=F*J;
END LOOP;
S:=ROUND(s+(POWER(X,I)/F),3);
F:=1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('SUM
OF NUMBER IS '||S);
END;
/
71.Write a
program to accept the population of hyderabad each year the population
increases
2% after
4y what is the population of hyd
DECLARE
P
NUMBER:=&P;
L NUMBER;
BEGIN
FOR J IN
1..4
LOOP
L:=P*2/100;
P:=P+L;
END LOOP;
DBMS_OUTPUT.PUT_LINE('POPULATION
OF HYDERABAD AFTER 4 YEARS IS '||TRUNC(P));
END;
/
72.WAP to
accept the 3 dates and display the most recently month among 3 dates
DECLARE
D1
DATE:='&D1';
D2
DATE:='&D2';
D3
DATE:='&D3';
M1 NUMBER;
M2 NUMBER;
M3 NUMBER;
BEGIN
M1:=TO_CHAR(D1,'MM');
M2:=TO_CHAR(D2,'MM');
M3:=TO_CHAR(D3,'MM');
IF
M1>M2 AND M1>M3 THEN
DBMS_OUTPUT.PUT_LINE(TO_CHAR(D1,'MON')||'
IS RECENT MONTH');
ELSIF
M2>M1 AND M2>M3 THEN
DBMS_OUTPUT.PUT_LINE(TO_CHAR(D2,'MON')||'
IS RECENT MONTH');
ELSE
DBMS_OUTPUT.PUT_LINE(TO_CHAR(D3,'MON')||'
IS RECENT MONTH');
END IF;
END;
/
73.Accept
a string and print in the following format
O
OR
ORA
ORAC
ORACL
ORACLE
DECLARE
V
VARCHAR2(20):='&V';
C
VARCHAR(20);
BEGIN
FOR I IN
1..LENGTH(V)
LOOP
C:=SUBSTR(V,1,I);
DBMS_OUTPUT.PUT_LINE(C);
END LOOP;
END;
/
74.Write a
program to accept the annual income of the emp and find the income tax
i) If the
annsal > 60000 then tax is 10% of income
ii) If the
annsal > 100000 then tax is Rs 800+16% of income
iii) If
the annsal > 140000 then tax is Rs 2500+25% of income
DECLARE
AI
NUMBER(10,2):=&ANNUALINCOME;
TAX
NUMBER(10,3):=0;
BEGIN
IF AI
BETWEEN 36000 AND 50000 THEN
TAX:=AI*10/100;
ELSIF AI
BETWEEN 50000 AND 100000 THEN
TAX:=800+AI*16/100;
ELSIF AI
> 100000 THEN
TAX:=2500+AI*25/100;
END IF;
DBMS_OUTPUT.PUT_LINE('ANNUAL
INCOME '||AI);
DBMS_OUTPUT.PUT_LINE('TAX
'||TAX);
END;
/
75.WAP to
accept a year as i/p & find how many even number present in that year
DECLARE
Y
NUMBER:=&YEAR;
A
VARCHAR2(20);
CNT
NUMBER(5):=0;
BEGIN
FOR I IN
1..LENGTH(Y)
LOOP
A:=SUBSTR(Y,I,1);
IF
MOD(A,2)=0 THEN
CNT:=CNT+1;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('NUMBER
OF EVEN DIGIT IS '||CNT);
END;
/
76.WAP to
accept a year as i/p & find how many odd number present in that year
DECLARE
Y
NUMBER:=&YEAR;
A
VARCHAR2(20);
CNT
NUMBER(5):=0;
BEGIN
FOR I IN
1..LENGTH(Y)
LOOP
A:=SUBSTR(Y,I,1);
IF
MOD(A,2)!=0 THEN
CNT:=CNT+1;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('NUMBER
OF EVEN DIGIT IS '||CNT);
END;
/
77.WAP to
accept a number and calculate the sum of numbers in even places
DECLARE
N
NUMBER:=&NUMBER;
A
VARCHAR2(10);
S
NUMBER:=0;
BEGIN
FOR I IN
1..LENGTH(N)
LOOP
A:=SUBSTR(N,I,1);
IF
MOD(I,2)=0 THEN
S:=S+A;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('SUM
OF EVEN PLACE IS '||S);
END;
/
78.WAP to
accept the emp details and calculate the bonus based on the following
conditions
i) If sal
< 500 then bonus is 10% sal
ii) If sal
> 3500 then bonus is 12% sal
iii) If
sal > 1000 then bonus is 13.5% sal
DECLARE
EMPNOV
NUMBER:=&EMPNOV;
SALV
NUMBER;
B
NUMBER(7,2);
BEGIN
SELECT SAL
INTO SALV FROM EMP WHERE EMPNO=EMPNOV;
IF SALV
BETWEEN 500 AND 3500 THEN
B:=SALV*10/100;
ELSIF SALV
BETWEEN 3500 AND 10000 THEN
B:=SALV*12/100;
ELSIF
SALV>10000 THEN
B:=SALV*13.5/100;
END IF;
DBMS_OUTPUT.PUT_LINE('EMPNO
'||EMPNOV);
DBMS_OUTPUT.PUT_LINE('SALARY
'||SALV);
DBMS_OUTPUT.PUT_LINE('BONUS
'||B);
END;
/
79.WAP to
accept the empno and display ename,sal,hiredate and calculate
ta,da,hra,lic,gross,exp and
print all
emp details. ta is 30% of sal,da is 20% of sal,hra is 15% of sal,lic is 5% of
sal
DECLARE
EMPNOV NUMBER:=&EMPNOV;
ENAMEV
EMP.ENAME%TYPE;
SALV
EMP.SAL%TYPE;
HIREDATEV
EMP.HIREDATE%TYPE;
EXP
NUMBER(7,2);
TA
NUMBER(7,2);
DA
NUMBER(7,2);
HRA
NUMBER(7,2);
LIC
NUMBER(7,2);
GROSS
NUMBER(7,2);
S
NUMBER:=0;
BEGIN
SELECT
ENAME,SAL,HIREDATE INTO ENAMEV,SALV,HIREDATEV FROM EMP WHERE EMPNO=EMPNOV;
EXP:=ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATEV)/12,3);
TA:=SALV*30/100;
DA:=SALV*20/100;
HRA:=SALV*15/100;
LIC:=SALV*5/100;
GROSS:=SALV+TA+DA+HRA-LIC;
DBMS_OUTPUT.PUT_LINE('EMPNO
'||EMPNOV); DBMS_OUTPUT.PUT_LINE('ENAME '||ENAMEV);
DBMS_OUTPUT.PUT_LINE('SALARY
'||SALV);
DBMS_OUTPUT.PUT_LINE('EXPERIENCE
'||EXP);
DBMS_OUTPUT.PUT_LINE('TA
'||TA);
DBMS_OUTPUT.PUT_LINE('DA
'||DA);
DBMS_OUTPUT.PUT_LINE('HRA
'||HRA);
DBMS_OUTPUT.PUT_LINE('LIC
'||LIC);
DBMS_OUTPUT.PUT_LINE('GROSS
'||GROSS);
END;
/
80.WAP to
accept the item no ,item name,qty,unit price and calculate the bill
If the
bill > 500 then give discount 2% of bill amount and display the details
DECLARE
INO
NUMBER:=&INO;
INAME
VARCHAR2(50):='&INAME';
QTY
NUMBER(5):=&QTY;
UP
NUMBER(7,2):=&UP;
DIS
NUMBER(7,2):=0;
BILL
NUMBER(7,2);
NET
NUMBER(7,2);
BEGIN
BILL:=QTY*UP;
IF BILL
> 500 THEN
DIS:= BILL
* 2 / 100;
END IF;
NET:=BILL-DIS;
DBMS_OUTPUT.PUT_LINE('ITEM
NO '||INO);
DBMS_OUTPUT.PUT_LINE('ITEM
NAME '||INAME);
DBMS_OUTPUT.PUT_LINE('QUANTITY
'||QTY);
DBMS_OUTPUT.PUT_LINE('UNIT
PRICE '||UP);
DBMS_OUTPUT.PUT_LINE('BILL
AMT '||BILL);
DBMS_OUTPUT.PUT_LINE('DISCOUNT
'||DIS);
DBMS_OUTPUT.PUT_LINE('NET
AMT '||NET);
END;
/
81.Write a
program to generate sequence of numbers horizontally from 1 to 25
DECLARE
V
VARCHAR2(100);
BEGIN
FOR I IN
1..25
LOOP
V:=V||'
'||I;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
END;
/
82.WAP to accept a empno and display empno,name,sal,exp,dname,grade and loc.
DECLARE
EMPNOV
NUMBER:=&EMPNO;
ENAMEV
EMP.ENAME%TYPE;
HIREDATEV
DATE;
SALV
EMP.SAL%TYPE;
EXP
NUMBER;
DNAMEV
DEPT.DNAME%TYPE;
GRADEV
SALGRADE.GRADE%TYPE;
BEGIN
SELECT
ENAME,SAL,HIREDATE,DNAME,GRADE INTO ENAMEV,SALV,HIREDATEV,DNAMEV,GRADEV FROM
EMP,DEPT,SALGRADE
WHERE
EMPNO=EMPNOV AND EMP.DEPTNO=DEPT.DEPTNO AND SAL BETWEEN LOSAL AND HISAL;
EXP:=ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATEV)/12,3);
DBMS_OUTPUT.PUT_LINE('EMPNO
'||EMPNOV);
DBMS_OUTPUT.PUT_LINE('ENAME
'||ENAMEV);
DBMS_OUTPUT.PUT_LINE('SALARY
'||SALV);
DBMS_OUTPUT.PUT_LINE('EXPERIENCE
'||EXP||' YEARS');
DBMS_OUTPUT.PUT_LINE('DNAME
'||DNAMEV);
DBMS_OUTPUT.PUT_LINE('GRADE
'||GRADEV);
END;
/
83.WAP to
accept a empno and display empno,based on experience calculate the bonus and
store it into the bonus table
If exp
> 5 years then bonus is 1 month salary
If exp
between 5 and 9 years then bonus is 20% of annual salary
If exp
more than 9 years then bonus is 1 month sal plus 25% of annual salary
DECLARE
EMPNOV
NUMBER:=&EMPNO;
ENAMEV
EMP.ENAME%TYPE;
HIREDATEV
DATE;
SALV
EMP.SAL%TYPE;
EXP
NUMBER;
DNAMEV
DEPT.DNAME%TYPE;
GRADEV
SALGRADE.GRADE%TYPE;
BEGIN
SELECT
ENAME,SAL,HIREDATE,DNAME,GRADE INTO ENAMEV,SALV,HIREDATEV,DNAMEV,GRADEV FROM
EMP,DEPT,SALGRADE
WHERE
EMPNO=EMPNOV AND EMP.DEPTNO=DEPT.DEPTNO AND SAL BETWEEN LOSAL AND HISAL;
EXP:=ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATEV)/12,3);
DBMS_OUTPUT.PUT_LINE('EMPNO
'||EMPNOV);
DBMS_OUTPUT.PUT_LINE('ENAME
'||ENAMEV);
DBMS_OUTPUT.PUT_LINE('SALARY
'||SALV);
DBMS_OUTPUT.PUT_LINE('EXPERIENCE
'||EXP||' YEARS');
DBMS_OUTPUT.PUT_LINE('DNAME
'||DNAMEV);
DBMS_OUTPUT.PUT_LINE('GRADE
'||GRADEV);
END;
/
84.WAP to
accept the empno, based upon the dname transfer the emps ie, make the changes
in the emp table. Transfer the emps from Accounting dept to Research, Research
dept to Operation, Opertion dept to Sales and Sales to Accounting dept
DECLARE
EMPNOV
NUMBER:=&EMPNO;
DNAMEV
VARCHAR2(20);
DNAMEVV
VARCHAR2(20);
BEGIN
SELECT
DNAME INTO DNAMEV FROM EMP,DEPT WHERE EMPNO=EMPNOV AND EMP.DEPTNO=DEPT.DEPTNO;
IF
DNAMEV='ACCOUNTING' THEN
DNAMEVV:='RESEARCH';
ELSIF
DNAMEV='RESEARCH' THEN
DNAMEVV:='SALES';
ELSIF DNAMEV='SALES'
THEN
DNAMEVV:='OPERATIONS';
ELSIF
DNAMEV='OPERATIONS' THEN
DNAMEVV:='ACCOUNTING';
END IF;
UPDATE EMP
SET DEPTNO=(SELECT DEPTNO FROM DEPT WHERE DNAME=DNAMEVV) WHERE EMPNO=EMPNOV;
END;
/
85.WAP to
accept the empno and display all the details of emp. If emp doesnot exist
display the appreciate message
DECLARE
EMPNOV
NUMBER:=&EMPNO;
EMPV
EMP%ROWTYPE;
BEGIN
SELECT *
INTO EMPV FROM EMP WHERE EMPNO=EMPNOV;
DBMS_OUTPUT.PUT_LINE('EMPNO
'||EMPV.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
'||EMPV.ENAME);
DBMS_OUTPUT.PUT_LINE('JOB
'||EMPV.JOB);
DBMS_OUTPUT.PUT_LINE('SALARY
'||EMPV.SAL);
DBMS_OUTPUT.PUT_LINE('HIREDATE
'||EMPV.HIREDATE);
DBMS_OUTPUT.PUT_LINE('DEPTNO
'||EMPV.DEPTNO);
DBMS_OUTPUT.PUT_LINE('MGRNO
'||EMPV.MGR);
DBMS_OUTPUT.PUT_LINE('COMMISSION
'||EMPV.COMM);
EXCEPTION
WHEN
NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('EMP
NUMBER DOES NOT EXIST');
END;
/
86.WAP to
accept the empno and print all the details of emp,dept and salgrade
DECLARE
E
EMP%ROWTYPE;
D
DEPT%ROWTYPE;
S
SALGRADE%ROWTYPE;
BEGIN
SELECT *
INTO E FROM EMP WHERE EMPNO=&EMPNO;
SELECT *
INTO D FROM DEPT WHERE E.DEPTNO=DEPT.DEPTNO;
SELECT *
INTO S FROM SALGRADE WHERE E.SAL BETWEEN LOSAL AND HISAL;
DBMS_OUTPUT.PUT_LINE('EMPNO
'||E.EMPNO);
DBMS_OUTPUT.PUT_LINE('DEPTNO
'||D.DEPTNO);
DBMS_OUTPUT.PUT_LINE('DNAME
'||D.DNAME);
DBMS_OUTPUT.PUT_LINE('LOCATION
'||D.LOC);
DBMS_OUTPUT.PUT_LINE('GRADE
'||S.GRADE);
DBMS_OUTPUT.PUT_LINE('HISALARY
'||S.HISAL);
DBMS_OUTPUT.PUT_LINE('LOWSALARY
'||S.LOSAL);
END;
/
87.WAP to accept the mgrno and display the empno,ename,sal,dname and grade
of all emps working under that mgr
DECLARE
MGRV
NUMBER:=&MGRV;
CURSOR
EMPCUR IS
SELECT
EMPNO,ENAME,SAL,DEPTNO,GRADE FROM EMP,SALGRADE WHERE MGR=MGRV AND SAL BETWEEN
LOSAL AND HISAL;
X
EMPCUR%ROWTYPE;
BEGIN
OPEN
EMPCUR;
LOOP
FETCH
EMPCUR INTO X;
EXIT WHEN
EMPCUR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMPNO
'||X.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
'||X.ENAME);
DBMS_OUTPUT.PUT_LINE('SALARY
'||X.SAL);
DBMS_OUTPUT.PUT_LINE('DEPTNO
'||X.DEPTNO);
DBMS_OUTPUT.PUT_LINE('GRADE
'||X.GRADE);
DBMS_OUTPUT.PUT_LINE('******************');
END LOOP;
CLOSE
EMPCUR;
END;
/
88.WAP to accept the empno and display the exp with minimum 3 decimal places
DECLARE
EMPNOV
NUMBER:=&EMPNOV;
HIREDATEV
DATE;
EXPV
NUMBER(10,5);
BEGIN
SELECT
HIREDATE INTO HIREDATEV FROM EMP WHERE EMPNO=EMPNOV;
EXPV:=ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATEV)/12,3);
DBMS_OUTPUT.PUT_LINE('EXPERIENCE
OF EMP'||EMPNOV||' IS '||EXPV||' YEARS ');
END;
/
89.Write a program to print the following series
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
1..5
LOOP
FOR J IN
1..I
LOOP
V:=V||'
'||J;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
90.Write a program to print the following series
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
1..5
LOOP
FOR J IN
REVERSE 1..I
LOOP
V:=V||'
'||J;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
91.Write a program to print the following series
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
REVERSE 1..5
LOOP
FOR J IN
1..I
LOOP
V:=V||'
'||J;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
92.Write a program to print the following series
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
1..5
LOOP
FOR J IN
1..5
LOOP
V:=V||'
'||I;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
93.Write a program to print the following series
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
1..5
LOOP
FOR J IN
1..5
LOOP
V:=V||'
'||J;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
94.Write a program to print the following series
5 4 3 2 1
5 4 3 2
5 4 3
5 4
5
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
1..5
LOOP
FOR J IN
REVERSE 1..5
LOOP
IF I<=J
THEN
V:=V||'
'||J;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
95.Write a program to print the following series
5 5 5 5 5
4 4 4 4
3 3 3
2 2
1
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
REVERSE 1..5
LOOP
FOR J IN
1..5
LOOP
IF I>=J
THEN
V:=V||'
'||I;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
96.Write a program to print the following series
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
1..5
LOOP
FOR J IN
1..I
LOOP
V:=V||'
'||I;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
97.Write a
program to print the following series
1
0 1
1 0 1
0 1 0 1
1 0 1 0 1
DECLARE
A
NUMBER:=1;
V
VARCHAR2(20):=1;
BEGIN
DBMS_OUTPUT.PUT_LINE(V);
FOR I IN
1..4
LOOP
IF
SUBSTR(V,1,1)='1' THEN
V:='0'||V;
ELSE
V:='1'||V;
END IF;
DBMS_OUTPUT.PUT_LINE(V);
END LOOP;
END;
/
98.Write a program to print the following series
*
* *
* * *
* * * *
* * * * *
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
1..5
LOOP
FOR J IN
1..I
LOOP
V:=V||'
'||'*';
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
99.Write a program to print the following series
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
1..5
LOOP
FOR J IN
1..I
LOOP
V:=V||'
'||'*';
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
FOR I IN
REVERSE 1..5
LOOP
FOR J IN
2..I
LOOP
V:=V||'
'||'*';
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
100.Write a program to print the following series
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
1..5
LOOP
FOR J IN
I..5
LOOP
V:=V||'
'||J;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
101.Write a program to print the following series
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
REVERSE 1..5
LOOP
FOR J IN
REVERSE 1..I
LOOP
V:=V||'
'||J;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
102.WAP to accept 2 nos and find the sum and product of the nos and print
the output
DECLARE
A
NUMBER:=&A;
B
NUMBER:=&B;
S NUMBER;
M NUMBER;
BEGIN
S:=A+B;
M:=A*B;
DBMS_OUTPUT.PUT_LINE('SUM
OF '||'A'||' AND '||'B'||' IS '||S);
DBMS_OUTPUT.PUT_LINE('PRODUCT
OF '||'A'||' AND '||'B'||' IS '||M);
END;
/
103.WAP to accept 2 nos and find the remainder when the first number is
divided by sencond(dont use mod function)
DECLARE
A
NUMBER:=&A;
B
NUMBER:=&B;
C NUMBER;
M NUMBER;
BEGIN
C:=TRUNC(A/B);
M:=A-C*B;
DBMS_OUTPUT.PUT_LINE('REMAINDER
IS '||M);
END;
/
104.WAP to display all the ASCII characters
0-9--48-57,A-Z--65-90,a-z--97-122
BEGIN
FOR I IN
1..255
LOOP
DBMS_OUTPUT.PUT_LINE(I||'-'||CHR(I));
END LOOP;
END;
/
105.Print the following format
ORACLE
ORACL
ORAC
ORA
OR
O
DECLARE
STR
VARCHAR2(10):='&STR';
L
VARCHAR2(10);
N
NUMBER(15);
BEGIN
N:=LENGTH(STR);
WHILE
N>=1
LOOP
L:=SUBSTR(STR,1,N);
N:=N-1;
DBMS_OUTPUT.PUT_LINE(L);
END LOOP;
END;
/
106.WAP to display "GOOD MORNING" or "GOOD AFTERNOON" or
"GOOD NIGHT" depending upon the current time
DECLARE
HH NUMBER;
BEGIN
HH:=TO_CHAR(SYSDATE,'HH24');
IF HH>6
AND HH<12 THEN
DBMS_OUTPUT.PUT_LINE('GOOD
MORNING');
ELSIF
HH>=12 AND HH<18 THEN
DBMS_OUTPUT.PUT_LINE('GOOD
AFTERNOON');
ELSIF
HH>=18 AND HH<25 THEN
DBMS_OUTPUT.PUT_LINE('GOOD
NIGHT');
END IF;
END;
/
107.WAP to accept two strings and concat the two strings
DECLARE
STR
VARCHAR2(20):='&STR';
STR1
VARCHAR2(20):='&STR1';
V VARCHAR2(40);
BEGIN
V:=STR||''||STR1;
DBMS_OUTPUT.PUT_LINE(V);
END;
/
108.WAP to accept a string and count the no of chars,words in that string
DECLARE
STR
VARCHAR2(20):='&STR';
NOC
NUMBER(4):=0;
NOW
NUMBER(4):=1;
S CHAR;
BEGIN
FOR I IN
1..LENGTH(STR)
LOOP
S:=SUBSTR(STR,I,1);
NOC:=NOC+1;
IF S=' '
THEN
NOW:=NOW+1;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('THE
NO. OF CHARS '||NOC);
DBMS_OUTPUT.PUT_LINE('THE
NO. OF WORDS '||NOW);
END;
/
109.WAP to accept the octal number and print it in decimal format
DECLARE
N
VARCHAR2(20):='&N';
A NUMBER;
P
NUMBER:=0;
C CHAR;
BEGIN
A:=LENGTH(N);
FOR I IN
1..A
LOOP
C:=SUBSTR(N,I,1);
P:=P+C*POWER(8,A-I);
END LOOP;
DBMS_OUTPUT.PUT_LINE('THE
INTEGER OF A GIVEN OCTAL IS '||P);
END;
/
110.WAP to accept the mgr and find how many emps are working under that mgr
DECLARE
MGRV
EMP.MGR%TYPE:=&MGRNO;
N
NUMBER:=0;
BEGIN
SELECT
COUNT(*) INTO N FROM EMP WHERE MGR=MGRV;
DBMS_OUTPUT.PUT_LINE('NUMBER
OF EMPLOYEE UNDER THAT MANAGER ARE '||N);
END;
/
111.WAP to accept the empno and update the employee row on the following
If sal
< 2600 then sal=sal+10% of sal make the changes in the emp table
DECLARE
EMPNOV
EMP.EMPNO%TYPE:=&EMPNO;
SALV
NUMBER(7,2):=0;
BEGIN
SELECT SAL
INTO SALV FROM EMP WHERE EMPNO=EMPNOV;
IF SALV
< 2600 THEN
SALV:=SALV+SALV*(10/100);
END IF;
UPDATE EMP
SET SAL=SALV WHERE EMPNO=EMPNOV;
DBMS_OUTPUT.PUT_LINE('EMPNO
IS '||EMPNOV);
DBMS_OUTPUT.PUT_LINE('SAL
IS '||SALV);
END;
/
112.Write the floyd's triangle
1
2 3
4 5 6
7 8 9 10
11 12 13
14 15
16 17 18
19 20 21
...............
79..............91
DECLARE
N
NUMBER:=1;
V
VARCHAR2(100);
BEGIN
FOR I IN
1..92
LOOP
FOR J IN
1..I
LOOP
V:=V||'
'||N;
N:=N+1;
EXIT WHEN
N=92;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
EXIT WHEN
N=92;
V:=NULL;
END LOOP;
END;
/
113.WAP to accept the real value and print integer value only
DECLARE
N
NUMBER(7,3):=&N;
A
NUMBER(5);
BEGIN
A:=TRUNC(N);
DBMS_OUTPUT.PUT_LINE('REAL
VALUE IS '||A);
END;
/
114.WAP to calculate the sum of n odd factorials
DECLARE
N
NUMBER:=&N;
S
NUMBER:=0;
F
NUMBER:=1;
BEGIN
FOR I IN
1..N
LOOP
IF
MOD(I,2)!=0 THEN
FOR J IN
1..I
LOOP
F:=F*J;
END LOOP;
S:=S+F;
F:=1;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('SUM
'||S);
END;
/
115.WAP to calculate the sum of n even factorials
DECLARE
N
NUMBER:=&N;
S
NUMBER:=0;
F
NUMBER:=1;
BEGIN
FOR I IN
1..N
LOOP
IF
MOD(I,2)=0 THEN
FOR J IN
1..I
LOOP
F:=F*J;
END LOOP;
S:=S+F;
F:=1;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('SUM
'||S);
END;
/
116.WAP to generate the nos which are prime and odd between 1 and 100
DECLARE
N NUMBER;
CNT
NUMBER:=0;
BEGIN
FOR I IN
1..100
LOOP
FOR J IN
1..I
LOOP
IF MOD(I,J)=0
THEN
CNT:=CNT+1;
END IF;
END LOOP;
IF CNT
<= 2 THEN
IF
MOD(I,2)!=0 THEN
DBMS_OUTPUT.PUT_LINE(I);
END IF;
END IF;
CNT:=0;
END LOOP;
END;
/
117.Write
a program to generate following series
12
12 22
12 22 32
12 22 32
42
12 22 32
42 52
DECLARE
V
VARCHAR2(20);
BEGIN
FOR I IN
1..5
LOOP
FOR J IN
1..I
LOOP
V:=V||'
'||J||CHR(178);
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;
/
118.Find the roots of a quadratic equation
DECLARE
A
NUMBER(4):=&A;
B
NUMBER(4):=&B;
C
NUMBER(4):=&C;
D
NUMBER(8,2);
R1
NUMBER(8,2);
R2
NUMBER(8,2);
BEGIN
D:=POWER(B,2)-4*A*C;
IF D = 0
THEN
DBMS_OUTPUT.PUT_LINE('ROOTS
ARE EQUAL');
ELSIF D
> 0 THEN
R1:=(-B+SQRT(D))/2*A;
R2:=(-B-SQRT(D))/2*A;
DBMS_OUTPUT.PUT_LINE('FIRST
ROOT IS '||R1);
DBMS_OUTPUT.PUT_LINE('SECOND
ROOT IS '||R2);
ELSE
DBMS_OUTPUT.PUT_LINE('ROOTS
ARE IMAGINARY');
END IF;
END;
/
119.WAP to accept the 2 diff nos, assume that first one is smaller and
second one is highest value then print the all even nos in between them
horizontally
DECLARE
A
NUMBER:=&A;
B
NUMBER:=&B;
V
VARCHAR2(100);
BEGIN
FOR I IN
A..B
LOOP
IF
MOD(I,2)=0 THEN
V:=V||'
'||I;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
END;
/
120.WAP to accept two diff nos assume that first one is smaller and second
one is highest value then print the all odd nos in between them horizontally
DECLARE
A
NUMBER:=&A;
B
NUMBER:=&B;
V
VARCHAR2(100);
BEGIN
FOR I IN
A..B
LOOP
IF
MOD(I,2)!=0 THEN
V:=V||'
'||I;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
END;
/
121. Write
a program to accept a year and display the emps belongs to that year?
DECLARE
Y
NUMBER(4):=&YEAR;
CURSOR
YEAR IS
SELECT *
FROM EMP WHERE TO_CHAR(HIREDATE,'YYYY')=Y;
B
YEAR%ROWTYPE;
BEGIN
OPEN YEAR;
LOOP
FETCH YEAR
INTO B;
EXIT WHEN
YEAR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMP
NO IS ' || B.EMPNO);
DBMS_OUTPUT.PUT_LINE('EMP
NAME IS ' || B.ENAME);
DBMS_OUTPUT.PUT_LINE('EMP
SAL IS ' || B.SAL);
DBMS_OUTPUT.PUT_LINE('HIREDATE
IS ' || B.HIREDATE);
DBMS_OUTPUT.PUT_LINE('EMP
JOB IS ' || B.JOB);
DBMS_OUTPUT.PUT_LINE('*************************');
END LOOP;
CLOSE
YEAR;
END;
/
122.Write a program to accept a mgr and display who are working under that
mgr?
DECLARE
MGRV
NUMBER(4):=&MGR;
CURSOR
AMGR IS
SELECT *
FROM EMP WHERE MGR=MGRV;
B
AMGR%ROWTYPE;
BEGIN
OPEN AMGR;
LOOP
FETCH AMGR
INTO B;
EXIT WHEN
AMGR%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMP
NO IS ' || B.EMPNO);
DBMS_OUTPUT.PUT_LINE('EMP
NAME IS ' || B.ENAME);
DBMS_OUTPUT.PUT_LINE('EMP
SAL IS ' || B.SAL);
DBMS_OUTPUT.PUT_LINE('HIREDATE
IS ' || B.HIREDATE);
DBMS_OUTPUT.PUT_LINE('EMP
JOB IS ' || B.JOB);
DBMS_OUTPUT.PUT_LINE('*************************');
END LOOP;
CLOSE
AMGR;
END;
/
123. Write a program to accept the grade and display emps belongs to that
grade?
DECLARE
GRADEV
SALGRADE.GRADE%TYPE:=&GRADE;
CURSOR A
IS
SELECT
EMP.*,GRADE FROM EMP,SALGRADE WHERE SAL BETWEEN LOSAL AND HISAL AND
GRADE=GRADEV;
B
A%ROWTYPE;
BEGIN
OPEN A;
LOOP
FETCH A
INTO B;
EXIT WHEN
A%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMP
NO IS ' || B.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
IS ' || B.ENAME);
DBMS_OUTPUT.PUT_LINE('SAL
IS ' || B.SAL);
DBMS_OUTPUT.PUT_LINE('MGR
NO IS ' || B.MGR);
DBMS_OUTPUT.PUT_LINE('COMM
IS ' || B.COMM);
DBMS_OUTPUT.PUT_LINE('HIREDATE
IS ' || B.HIREDATE);
DBMS_OUTPUT.PUT_LINE('GRADE
IS ' || B.GRADE);
DBMS_OUTPUT.PUT_LINE('EMP
JOB IS ' || B.JOB);
DBMS_OUTPUT.PUT_LINE('*************************');
END LOOP;
CLOSE A;
END;
/
124. Write a program to accept a deptno and display who are working in that
dept?
DECLARE
DEPTV
EMP.DEPTNO%TYPE:=&DEPTNO;
CURSOR A
IS
SELECT *
FROM EMP WHERE DEPTNO=DEPTV;
B
A%ROWTYPE;
BEGIN
OPEN A;
LOOP
FETCH A
INTO B;
EXIT WHEN
A%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMP
NO IS ' || B.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
IS ' || B.ENAME);
DBMS_OUTPUT.PUT_LINE('SAL
IS ' || B.SAL);
DBMS_OUTPUT.PUT_LINE('MGR
NO IS ' || B.MGR);
DBMS_OUTPUT.PUT_LINE('COMM
IS ' || B.COMM);
DBMS_OUTPUT.PUT_LINE('HIREDATE
IS ' || B.HIREDATE);
DBMS_OUTPUT.PUT_LINE('DEPTNO
IS ' || B.DEPTNO);
DBMS_OUTPUT.PUT_LINE('EMP
JOB IS ' || B.JOB);
DBMS_OUTPUT.PUT_LINE('*************************');
END LOOP;
CLOSE A;
END;
/
125. Write a program to display all the information of emp table?
DECLARE
CURSOR A
IS
SELECT *
FROM EMP;
B
A%ROWTYPE;
BEGIN
OPEN A;
LOOP
FETCH A
INTO B;
EXIT WHEN
A%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMP
NO IS ' || B.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
IS ' || B.ENAME);
DBMS_OUTPUT.PUT_LINE('SAL
IS ' || B.SAL);
DBMS_OUTPUT.PUT_LINE('MGR
NO IS ' || B.MGR);
DBMS_OUTPUT.PUT_LINE('COMM
IS ' || B.COMM);
DBMS_OUTPUT.PUT_LINE('HIREDATE
IS ' || B.HIREDATE);
DBMS_OUTPUT.PUT_LINE('DEPTNO
IS ' || B.DEPTNO);
DBMS_OUTPUT.PUT_LINE('EMP
JOB IS ' || B.JOB);
DBMS_OUTPUT.PUT_LINE('*************************');
END LOOP;
CLOSE A;
END;
/
126. Write a program to accept the location and display empno, name, sal ,
date of join and also display the total salary, avg salary and no of emps?
DECLARE
LOCV
DEPT.LOC%TYPE:='&LOC';
TOT
NUMBER(10,2):=0;
ASAL
NUMBER(10,2):=0;
NOEMPS
NUMBER(5):=0;
CURSOR A
IS
SELECT
EMP.*,LOC FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO AND LOC=LOCV;
B
A%ROWTYPE;
BEGIN
OPEN A;
LOOP
FETCH A
INTO B;
NOEMPS:=NOEMPS+1;
TOT:=TOT+B.SAL;
ASAL:=TOT/NOEMPS;
EXIT WHEN
A%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMP
NO IS ' || B.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
IS ' || B.ENAME);
DBMS_OUTPUT.PUT_LINE('SAL
IS ' || B.SAL);
DBMS_OUTPUT.PUT_LINE('HIREDATE
IS ' || B.HIREDATE);
DBMS_OUTPUT.PUT_LINE('DEPTNO
IS ' || B.DEPTNO);
DBMS_OUTPUT.PUT_LINE('EMP
JOB IS ' || B.JOB);
DBMS_OUTPUT.PUT_LINE('LOC
IS ' || B.LOC);
DBMS_OUTPUT.PUT_LINE('TOT
IS ' || TOT);
DBMS_OUTPUT.PUT_LINE('NOEMPS
IS ' || NOEMPS);
DBMS_OUTPUT.PUT_LINE('ASAL
IS ' || ASAL);
DBMS_OUTPUT.PUT_LINE('*************************');
END LOOP;
CLOSE A;
END;
/
127. Write a program to accept a range of salary (that is lower boundary and
higher boundary) and print the details of emps along with loc,grade and exp?
DECLARE
LOSALV
SALGRADE.LOSAL%TYPE:=&LOSAL;
HISALV
SALGRADE.HISAL%TYPE:=&HISAL;
EXP
NUMBER(5,2);
CURSOR A
IS
SELECT
EMP.*,LOC,GRADE FROM EMP,DEPT,SALGRADE WHERE EMP.DEPTNO=DEPT.DEPTNO
AND SAL
BETWEEN LOSALV AND HISALV
AND SAL
BETWEEN LOSAL AND HISAL;
B
A%ROWTYPE;
BEGIN
OPEN A;
LOOP
FETCH A
INTO B;
EXIT WHEN
A%NOTFOUND;
EXP:=MONTHS_BETWEEN(SYSDATE,B.HIREDATE)/12;
DBMS_OUTPUT.PUT_LINE('EMP
NO IS ' || B.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
IS ' || B.ENAME);
DBMS_OUTPUT.PUT_LINE('EMP
JOB IS ' || B.JOB);
DBMS_OUTPUT.PUT_LINE('LOC
IS ' || B.LOC);
DBMS_OUTPUT.PUT_LINE('EXP
IS ' || EXP);
DBMS_OUTPUT.PUT_LINE('GRADE
IS ' || B.GRADE);
DBMS_OUTPUT.PUT_LINE('*************************');
END LOOP;
CLOSE A;
END;
/
128. Write a program to print all the details of emps accepting the job?
DECLARE
JOBV
EMP.JOB%TYPE:='&JOB';
CURSOR A
IS
SELECT *
FROM EMP WHERE JOB=JOBV;
B
A%ROWTYPE;
BEGIN
OPEN A;
LOOP
FETCH A
INTO B;
EXIT WHEN
A%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMP
NO IS ' || B.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
IS ' || B.ENAME);
DBMS_OUTPUT.PUT_LINE('EMP
JOB IS ' || B.JOB);
DBMS_OUTPUT.PUT_LINE('*************************');
END LOOP;
CLOSE A;
END;
/
129. Write a program to display the details of emps year wise?
DECLARE
CURSOR
YEARS IS
SELECT
DISTINCT TO_CHAR(HIREDATE,'YYYY') YEARS1 FROM EMP ORDER BY 1;
YEAR
YEARS%ROWTYPE;
CURSOR A
IS
SELECT *
FROM EMP WHERE TO_CHAR(HIREDATE,'YYYY')=YEAR.YEARS1;
B
A%ROWTYPE;
BEGIN
DBMS_OUTPUT.ENABLE(10000);
OPEN
YEARS;
DBMS_OUTPUT.PUT_LINE('********************');
LOOP
FETCH
YEARS INTO YEAR;
EXIT WHEN
YEARS%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('YEAR
:' || YEAR.YEARS1);
DBMS_OUTPUT.PUT_LINE('**********************');
OPEN A;
LOOP
FETCH A
INTO B;
EXIT WHEN
A%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMPNO
IS ' || B.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
IS ' || B.ENAME);
DBMS_OUTPUT.PUT_LINE('SALARY
IS ' || B.SAL);
DBMS_OUTPUT.PUT_LINE('JOB
IS ' || B.JOB);
DBMS_OUTPUT.PUT_LINE('DEPTNO
IS ' || B.DEPTNO);
DBMS_OUTPUT.PUT_LINE('*************************');
END LOOP;
CLOSE A;
END LOOP;
CLOSE
YEARS;
END;
/
130. Write
a program to accept empno and print all the details along with loc and grade?
DECLARE
EMPNOV
EMP.EMPNO%TYPE:=&EMPNO;
CURSOR A
IS
SELECT
EMP.*,GRADE,LOC FROM EMP,DEPT,SALGRADE
WHERE
EMP.DEPTNO=DEPT.DEPTNO
AND SAL
BETWEEN LOSAL AND HISAL AND EMPNO=EMPNOV;
B
A%ROWTYPE;
BEGIN
OPEN A;
LOOP
FETCH A
INTO B;
EXIT WHEN
A%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMPNO
IS ' || B.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
IS ' || B.ENAME);
DBMS_OUTPUT.PUT_LINE('SALARY
IS ' || B.SAL);
DBMS_OUTPUT.PUT_LINE('JOB
IS ' || B.JOB);
DBMS_OUTPUT.PUT_LINE('HIREDATE
IS ' || B.HIREDATE);
DBMS_OUTPUT.PUT_LINE('LOC
IS ' || B.LOC);
DBMS_OUTPUT.PUT_LINE('GRADE
IS ' || B.GRADE);
DBMS_OUTPUT.PUT_LINE('*************************');
END LOOP;
CLOSE A;
END;
/
131. Write a procedure to create your own print statement?
CREATE OR
REPLACE PROCEDURE PRINT(V VARCHAR2)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(V);
END;
/
132. Write a procedure to accept the deptno as parameter and display the
details of that dept also display the total salary, no of employees, max sal
and avg sal?
CREATE OR
REPLACE PROCEDURE EMPPRO(DEPTNOV NUMBER)
IS
CURSOR A
IS
SELECT *
FROM EMP WHERE DEPTNO=DEPTNOV;
B
A%ROWTYPE;
NOE
NUMBER:=0;
TOT
NUMBER:=0;
AVGS
NUMBER(7,2):=0;
MAXS
NUMBER(7,2):=0;
BEGIN
OPEN A;
LOOP
FETCH A
INTO B;
EXIT WHEN
A%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMPNO
:'||B.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
:'||B.ENAME);
DBMS_OUTPUT.PUT_LINE('JOB
:'||B.JOB);
DBMS_OUTPUT.PUT_LINE('SAL
:'||B.SAL);
DBMS_OUTPUT.PUT_LINE('HIREDATE
:'||B.HIREDATE);
DBMS_OUTPUT.PUT_LINE('COMM
:'||B.COMM);
DBMS_OUTPUT.PUT_LINE('**********************');
TOT:=TOT+B.SAL;
NOE:=NOE+1;
IF
B.SAL>MAXS THEN
MAXS:=B.SAL;
END IF;
END LOOP;
AVGS:=TOT/NOE;
DBMS_OUTPUT.PUT_LINE('NO
OF EMPLOYEE :'||NOE);
DBMS_OUTPUT.PUT_LINE('TOTAL
SALARY :'||TOT);
DBMS_OUTPUT.PUT_LINE('AVG
SALARY :'||AVGS);
DBMS_OUTPUT.PUT_LINE('MAX
SALARY :'||MAXS);
CLOSE A;
END;
/
133. Write a procedure to accept two different numbers and print all odd
numbers between the two given numbers?
CREATE OR
REPLACE PROCEDURE ODDNO(A NUMBER,B NUMBER)
IS
N
NUMBER(4);
BEGIN
N:=A;
WHILE
N<B
LOOP
IF
MOD(N,2)!=0 THEN
DBMS_OUTPUT.PUT_LINE(N);
END IF;
N:=N+1;
END LOOP;
END;
/
134. Write a procedure to accept two different numbers and print even
numbers between the two given numbers?
CREATE OR
REPLACE PROCEDURE EVENNO(A NUMBER,B NUMBER)
IS
N
NUMBER(4);
BEGIN
N:=A;
WHILE
N<B
LOOP
IF
MOD(N,2)=0 THEN
DBMS_OUTPUT.PUT_LINE(N);
END IF;
N:=N+1;
END LOOP;
END;
/
135. Write a procedure to accept deptno as input and print the details of
emps along with grade?
CREATE OR
REPLACE PROCEDURE EMP_DETAIL(DEPTNOV NUMBER)
IS
CURSOR A
IS
SELECT
EMP.*,GRADE FROM EMP,SALGRADE
WHERE SAL
BETWEEN LOSAL AND HISAL
AND
DEPTNO=DEPTNOV;
B
A%ROWTYPE;
BEGIN
OPEN A;
LOOP
FETCH A
INTO B;
EXIT WHEN
A%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMPNO
IS '||B.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
IS '||B.ENAME);
DBMS_OUTPUT.PUT_LINE('JOB
IS '||B.JOB);
DBMS_OUTPUT.PUT_LINE('SAL
IS '||B.SAL);
DBMS_OUTPUT.PUT_LINE('DEPTNO
IS '||B.DEPTNO);
DBMS_OUTPUT.PUT_LINE('GRADE
IS '||B.GRADE);
END LOOP;
CLOSE A;
END;
/
136. Write a procedure to accept a number as parameter and print its
multiplication table?
CREATE OR
REPLACE PROCEDURE MULT(A NUMBER)
IS
B
NUMBER(2) DEFAULT 1;
C
NUMBER(3);
BEGIN
WHILE
B<=10
LOOP
C:=A*B;
DBMS_OUTPUT.PUT_LINE(A||'*'||B||'='||C);
B:=B+1;
END LOOP;
END;
/
137. Write a procedure to accept two different numbers as input and print
all even numbers and odd numbers in between them in two different horizontal
lines?
CREATE OR
REPLACE PROCEDURE EVENODD(A NUMBER,B NUMBER)
IS
N NUMBER;
EV
VARCHAR2(1000);
OD
VARCHAR2(1000);
BEGIN
N:=A;
WHILE
N<B
LOOP
IF
MOD(N,2)!=0 THEN
OD:=OD||'
'||N;
ELSE
EV:=EV||'
'||N;
END IF;
N:=N+1;
END LOOP;
DBMS_OUTPUT.PUT_LINE('THE
ODD NOS ARE '||OD);
DBMS_OUTPUT.PUT_LINE('THE
EVEN NOS ARE '||EV);
END;
/
138. Write a procedure to accept a string and check whether it is palindrome
or not?
CREATE OR
REPLACE PROCEDURE STRPAL(STR VARCHAR2)
IS
STR1
VARCHAR2(10);
S
VARCHAR2(10);
BEGIN
FOR I IN
REVERSE 1..LENGTH(STR)
LOOP
S:=SUBSTR(STR,I,1);
STR1:=STR1||S;
END LOOP;
IF
STR1=STR THEN
DBMS_OUTPUT.PUT_LINE('IT
IS PALINDROME '||STR1);
ELSE
DBMS_OUTPUT.PUT_LINE('IT
IS NOT PALINDROME '||STR1);
END IF;
END;
/
139. Write
a procedure to accept a string and print it in reverse order?
CREATE OR
REPLACE PROCEDURE STRREV(STR VARCHAR2)
IS
STR1
VARCHAR2(10);
S
VARCHAR2(10);
BEGIN
FOR I IN
REVERSE 1..LENGTH(STR)
LOOP
S:=SUBSTR(STR,I,1);
STR1:=STR1||S;
END LOOP;
DBMS_OUTPUT.PUT_LINE('ORIGINAL
'||STR);
DBMS_OUTPUT.PUT_LINE('REVERSE
'||STR1);
END;
/
140. Write a procedure to accept the empno and print all the details of emp
along with exp, grade and loc?
CREATE OR
REPLACE PROCEDURE EMP_DET(EMPNOV NUMBER)
IS
EXP
NUMBER(6,2);
E
EMP%ROWTYPE;
GRADEV
SALGRADE.GRADE%TYPE;
LOCV
DEPT.LOC%TYPE;
BEGIN
SELECT
EMP.* INTO E FROM EMP WHERE EMPNO=EMPNOV;
SELECT LOC
INTO LOCV FROM DEPT WHERE DEPT.DEPTNO=E.DEPTNO;
SELECT
GRADE INTO GRADEV FROM SALGRADE WHERE E.SAL BETWEEN LOSAL AND HISAL;
EXP:=MONTHS_BETWEEN(SYSDATE,E.HIREDATE)/12;
DBMS_OUTPUT.PUT_LINE('EMPNO
IS '||E.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
IS '||E.ENAME);
DBMS_OUTPUT.PUT_LINE('SAL
IS '||E.SAL);
DBMS_OUTPUT.PUT_LINE('JOB
IS '||E.JOB);
DBMS_OUTPUT.PUT_LINE('LOC
IS '||LOCV);
DBMS_OUTPUT.PUT_LINE('GRADE
IS '||GRADEV);
DBMS_OUTPUT.PUT_LINE('EXP
IS '||EXP);
END;
/
141. Write a procedure to accept dname irrespective of case and print all
the details of emps?
CREATE OR
REPLACE PROCEDURE DETAILS(DNAMEV VARCHAR2)
IS
CURSOR A
IS
SELECT
EMP.*,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO AND DNAME=DNAMEV;
B
A%ROWTYPE;
BEGIN
OPEN A;
LOOP
FETCH A
INTO B;
EXIT WHEN
A%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('EMPNO
IS '||B.EMPNO);
DBMS_OUTPUT.PUT_LINE('ENAME
IS '||B.ENAME);
DBMS_OUTPUT.PUT_LINE('SAL
IS '||B.SAL);
DBMS_OUTPUT.PUT_LINE('JOB
IS '||B.JOB);
DBMS_OUTPUT.PUT_LINE('DNAME
IS '||B.DNAME);
DBMS_OUTPUT.PUT_LINE('HIREDATE
IS '||B.HIREDATE);
END LOOP;
END;
/
142. Write a procedure to accept a string and print it in reverse case?
CREATE OR
REPLACE PROCEDURE S_R_CASE(STR VARCHAR2)
IS
S
VARCHAR2(10);
V
VARCHAR2(10);
N
NUMBER(3);
BEGIN
FOR I IN
1..LENGTH(STR)
LOOP
S:=SUBSTR(STR,I,1);
N:=ASCII(S);
IF N BETWEEN
65 AND 90 THEN
V:=V||CHR(N+32);
ELSE
V:=V||CHR(N-32);
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('STRING
IN REVERSE CASE IS '||V);
END;
/
143. Write a function to accept the empno and return exp with minimum 3
decimal?
CREATE OR
REPLACE FUNCTION E_DETAILS(EMPNOV NUMBER) RETURN NUMBER
IS
HIREDATEV
EMP.HIREDATE%TYPE;
EXP
NUMBER(6,3);
BEGIN
SELECT
HIREDATE INTO HIREDATEV FROM EMP WHERE EMPNO=EMPNOV;
EXP:=MONTHS_BETWEEN(SYSDATE,HIREDATEV)/12;
RETURN
EXP;
END;
/
144. Write a function to accept a number and print the factorial of that
number?
CREATE OR
REPLACE FUNCTION FAC(NUM NUMBER) RETURN NUMBER
IS
FACT
NUMBER(4):=1;
BEGIN
FOR I IN
REVERSE 1..NUM
LOOP
FACT:=FACT*I;
END LOOP;
RETURN
FACT;
END;
/
145. Write
a function to accept a grade and return the number of emps belongs to that
grade?
CREATE OR
REPLACE FUNCTION EMPGRADE(GRADEV NUMBER) RETURN VARCHAR2
IS
N
NUMBER(4);
BEGIN
SELECT
COUNT(*) INTO N FROM EMP,SALGRADE
WHERE SAL
BETWEEN LOSAL AND HISAL AND GRADE=GRADEV;
RETURN 'NO
OF EMPS ARE'||N;
END;
/
146. Write a program to accept the mgr number and return no of emp working
at that mgr?
CREATE OR
REPLACE FUNCTION N_EMPS(MGRV NUMBER) RETURN VARCHAR2
IS
N
NUMBER(4);
BEGIN
SELECT
COUNT(*) INTO N FROM EMP WHERE MGR=MGRV;
RETURN
'THE NO OF EMPS ARE WORKING UNDER THIS MGR IS '||N;
END;
/
147. Write a function to accept a character string and print it in reverse
case?
CREATE OR
REPLACE FUNCTION REVERSE(STR VARCHAR2) RETURN VARCHAR2
IS
STR1
VARCHAR2(20);
S
VARCHAR2(20);
N
NUMBER(4);
BEGIN
FOR I IN
1..LENGTH(STR)
LOOP
S:=SUBSTR(STR,I,1);
N:=ASCII(S);
IF N
BETWEEN 65 AND 90 THEN
STR1:=STR1||CHR(N+32);
ELSE
STR1:=STR1||CHR(N-32);
END IF;
END LOOP;
RETURN
'THE REVERSE CASE IS '||STR1;
END;
/
148. Write a function to accept a string and check whether it is palindrome
or not?
CREATE OR
REPLACE FUNCTION STRPAL1(STR VARCHAR2) RETURN VARCHAR2
IS
STR1
VARCHAR2(10);
S
VARCHAR2(10);
BEGIN
FOR I IN
REVERSE 1..LENGTH(STR)
LOOP
S:=SUBSTR(STR,I,1);
STR1:=STR1||S;
END LOOP;
IF
STR1=STR THEN
RETURN 'IT
IS PALINDROME '||STR1;
ELSE
RETURN 'IT
IS NOT PALINDROME '||STR1;
END IF;
END;
/
149. Write a function to accept the grade and return max, tot, avg salary
and number of emps belongs to that grade as script without using any group
functions?
CREATE OR
REPLACE FUNCTION EMP_DETAILS_SCRIPT (GRADEV SALGRADE.GRADE%TYPE) RETURN
VARCHAR2
IS
V
VARCHAR2(30000);
CURSOR
EMP_CUR IS
SELECT
EMP.*,GRADE,DNAME FROM DEPT,EMP,SALGRADE
WHERE
GRADE=GRADEV AND EMP.DEPTNO=DEPT.DEPTNO AND
SAL
BETWEEN LOSAL AND HISAL;
EMP_CUR_V
EMP_CUR%ROWTYPE;
MAXSAL
EMP.SAL%TYPE:=0;
MINSAL
EMP.SAL%TYPE;
AVGSAL
NUMBER(6,2);
SUMSAL
NUMBER(10,2):=0;
CNT
NUMBER:=0;
FLAG
CHAR:=0;
EX
EXCEPTION;
BEGIN
OPEN
EMP_CUR;
LOOP
FETCH
EMP_CUR INTO EMP_CUR_V;
EXIT WHEN
EMP_CUR%NOTFOUND;
IF MAXSAL
< EMP_CUR_V.SAL THEN
MAXSAL:=EMP_CUR_V.SAL;
END IF;
IF FLAG=0
THEN
MINSAL:=EMP_CUR_V.SAL;
FLAG:=1;
ELSIF
FLAG=1 AND MINSAL > EMP_CUR_V.SAL THEN
MINSAL:=EMP_CUR_V.SAL;
END IF;
SUMSAL:=SUMSAL+EMP_CUR_V.SAL;
CNT:=CNT+1;
ENDLOOP;
IF CNT=0
THEN
RAISE EX;
END IF;
AVGSAL:=SUMSAL/CNT;
V:='THE
MAXIMUM SALARY OF GRADE' ||GRADEV||' IS'||MAXSAL||' MINIMUM SALARY
IS'||MINSAL||
'AVERAGE
SALARY IS'||AVGSAL||' TOTAL EMPS WORKING FOR THIS GRADE ARE'||CNT;
CLOSE
EMP_CUR;
RETURN V;
EXCEPTION
WHEN EX
THEN
RETURN
'THERE IS NO EMPLOYEE WORKING FOR THIS GRADE, CHECK AND RE-ENTER THE
GRADE....';
END;
/
150. Create a package to store the following procedure for multiplication
table,even-odd, function for factorial and function for palindrome?
CREATE OR
REPLACE PACKAGE DATA
IS
PROCEDURE
MULT(A NUMBER);
PROCEDURE
EVEN_ODD(N NUMBER);
FUNCTION
FACT(N NUMBER) RETURN NUMBER;
PRAGMA
RESTRICT_REFERENCES(FACT,WNDS);
FUNCTION
PALEN(SRT VARCHAR2) RETURN VARCHAR2;
PRAGMA
RESTRICT_REFERENCES(PALEN,WNDS);
END;
/
CREATE OR
REPLACE PACKAGE BODY DATA
IS
PROCEDURE
MULT(A NUMBER)
IS
M NUMBER;
BEGIN
FOR I IN 1..10
LOOP
M:=A*I;
DBMS_OUTPUT.PUT_LINE(A||'*'||I||'='||M);
END LOOP;
END;
PROCEDURE
EVEN_ODD(N NUMBER)
IS
BEGIN
IF
MOD(N,2)=0 THEN
DBMS_OUTPUT.PUT_LINE(N||'
IS EVEN NUMBER');
ELSE
DBMS_OUTPUT.PUT_LINE(N||'
IS NOT EVEN NUMBER');
END IF;
END;
FUNCTION
FACT(N NUMBER) RETURN NUMBER
IS
F
NUMBER:=1;
BEGIN
FOR I IN
1..N
LOOP
F:=F*I;
END LOOP;
RETURN F;
END;
FUNCTION
PALEN(SRT VARCHAR2) RETURN VARCHAR2
IS
S CHAR;
V
VARCHAR2(50);
BEGIN
FOR I IN
REVERSE 1..LENGTH(SRT)
LOOP
S:=SUBSTR(SRT,I,1);
V:=V||S;
END LOOP;
IF V=SRT
THEN
RETURN
'PALINDROME';
ELSE
RETURN
'NOT PALINDROME';
END IF;
END;
END;
/
151.Write a database trigger halt the transaction on Sunday on EMP table
CREATE OR
REPLACE TRIGGER SUN_TRI
AFTER
INSERT OR UPDATE OR DELETE ON EMP
DECLARE
DY
VARCHAR2(200);
BEGIN
DY:=TO_CHAR(SYSDATE,'DY');
IF
DY='SUN' THEN
RAISE_APPLICATION_ERROR(-20005,'TODAY
IS SUNDAY TRANSACTION NOT ALLOWED TODAY');
END IF;
END;
/
152.Write a database trigger halt the transaction of USER SCOTT on table EMP
CREATE OR
REPLACE TRIGGER SCOTT_TRI
BEFORE
INSERT OR UPDATE OR DELETE ON EMP
BEGIN
IF USER =
'SCOTT' THEN
RAISE_APPLICATION_ERROR(-20006,'TRANSACTION
NOT ALLOWED FOR SCOTT');
END IF;
END;
/
153.Write a database trigger halt the transaction between the the time 6pm
to 10am on table emp
CREATE OR
REPLACE TRIGGER OVER_TIME_TRI
BEFORE
INSERT OR DELETE OR UPDATE ON EMP
DECLARE
T NUMBER;
BEGIN
T:=TO_CHAR(SYSDATE,'HH24');
IF T NOT
BETWEEN 10 AND 18 THEN
RAISE_APPLICATION_ERROR(-20007,'TIME
ALREADY OVER.....TRANSACTION NOT ALLOWED NOW');
END IF;
END;
154.Write a database trigger to halt the transaction for the employee
SALESMAN and
PRESIDENT
CREATE OR
REPLACE TRIGGER SALES_PRI
BEFORE INSERT
OR UPDATE OR DELETE ON EMP
FOR EACH
ROW
WHEN
(OLD.JOB IN ('SALESMAN','PRESIDENT') OR
NEW.JOB IN
('SALESMAN','PRESIDENT'))
BEGIN
RAISE_APPLICATION_ERROR(-20008,'TRANSACTION
NOT ALLOWED FOR SALESMAN AND PRESIDENT....');
END;
/
155.Write a database trigger stroe the username ,type of transaction ,date
of transaction and time of transaction of table emp into the table EMP_LOG
CREATE OR
REPLACE TRIGGER TRANS_TYPE
AFTER
INSERT OR UPDATE OR DELETE ON EMP
DECLARE
V
VARCHAR2(50);
BEGIN
IF
INSERTING THEN
V:='I';
ELSIF
UPDATING THEN
V:='U';
ELSE
V:='D';
END IF;
INSERT
INTO EMP_LOG VALUES (USER,V,SYSDATE,TO_CHAR(SYSDATE,'HH:MI:SS'));
END;
/
156.Write a database trigger store the deleted data of EMP table in EMPDEL
table
CREATE OR
REPLACE TRIGGER DEL_TRI
BEFORE
DELETE ON EMP
FOR EACH
ROW
BEGIN
INSERT
INTO EMPDEL
VALUES
(:OLD.EMPNO,:OLD.ENAME,:OLD.JOB,:OLD.MGR,:OLD.HIREDATE,:OLD.SAL,:OLD.COMM,
:OLD.DEPTNO,SYSDATE,TO_CHAR(SYSDATE,'HH:MI:SS));
END;
/
157.Write a database trigger display the message when the inserting hiredate
is greater than system date
CREATE OR
REPLACE TRIGGER HIREDATE_OVER
AFTER
INSERT ON EMP
FOR EACH
ROW
BEGIN
IF
:NEW.HIREDATE > SYSDATE THEN
RAISE_APPLICATION_ERROR(-20009,'INVALID
HIREDATE.....');
END IF;
END;
/
158.Write a database trigger halt the transaction of EMP table if the deptno
is does not exist in the dept table
CREATE OR
REPLACE TRIGGER DEPT_NO
BEFORE
INSERT OR UPDATE OR DELETE ON EMP
FOR EACH
ROW
DECLARE
DNO
NUMBER:=0;
BEGIN
SELECT
COUNT(*) INTO DNO FROM DEPT WHERE DEPTNO=:NEW.DEPTNO;
DBMS_OUTPUT.PUT_LINE(DNO);
IF DNO=0
THEN
RAISE_APPLICATION_ERROR(-20009,'DEPTNO
NOT EXIST IN DEPT TABLE....');
END IF;
END;
/
159.Write a database trigger add Rs 500 if the inserting salary is less than
Rs 1000
CREATE OR
REPLACE TRIGGER SAL_ADD
BEFORE
INSERT ON EMP
FOR EACH
ROW
BEGIN
IF
:NEW.SAL <= 1000 THEN
:NEW.SAL:=:NEW.SAL+500;
END IF;
END;
/
160.Write a database trigger give the appropriate message if the record
exceed more than 100 on EMP table
CREATE OR
REPLACE TRIGGER EMP_OVER_REC
AFTER
INSERT ON EMP
DECLARE
R NUMBER;
BEGIN
SELECT
COUNT(*) INTO R FROM EMP;
IF
R>=100 THEN
RAISE_APPLICATION_ERROR(-20009,'100
RECORD ALLOWED IN EMP TABLE.....');
END IF;
END;
/
161.Write a program to month and year and display the Calendar of that
month.
DECLARE
D
NUMBER:=1;
M
VARCHAR2(10):='&MONTH';
Y
NUMBER:=&YEAR;
C
CHAR(20);
V
VARCHAR2(500);
N NUMBER;
BEGIN
N:=TO_CHAR(LAST_DAY(D||'-'||M||'-'||Y),'DD');
C:=
TO_CHAR(TO_DATE(D||'-'||M||'-'||Y),'DY');
dbms_output.put_line('*********************************');
dbms_output.put_line('*
'||M||'-'||Y||' *');
dbms_output.put_line('*SUN
MON TUE WED THU FRI SAT *');
dbms_output.put_line('**********************************');
IF C='MON'
THEN
V:=' ';
ELSIF
C='TUE' THEN
V:=' ';
ELSIF
C='WED' THEN
V:=' ';
ELSIF
C='THU' THEN
V:=' ';
ELSIF
C='FRI' THEN
V:=' ';
ELSIF
C='SAT' THEN
V:=' ';
END IF;
FOR I IN
1..N
LOOP
V:=V||LPAD(I,4);
IF
LENGTH(V)=28 THEN
dbms_output.put_line(LPAD(V,29,'*')||'
*');
V:=NULL;
END IF;
END LOOP;
dbms_output.put_line('*'||RPAD(V,29)||'*');
END;
/