You are on page 1of 55

PLSQL Programmes

1. Write a Program to print the following format


2. WELCOME TO PL/SQL PROGRAMMING
3. BEGIN
4. DBMS_OUTPUT.PUT_LINE('WELCOME TO PL/SQL PROGRAMMING');
END;

5. Write a program to print the numbers from 1 to 100


6. DECLARE
7. N NUMBER(3):=1;
8. V VARCHAR2(1000);
9. BEGIN
10. WHILE N <=100
11. LOOP
12. V:=V||''||N;
13. N:=N+1;
14. END LOOP;
15. DBMS_OUTPUT.PUT_LINE(V);
16. END;

17. write a program to print the even numbers from 1 to 100


18.
19.
20.
21.
22.
23.
24.
25.

DECLARE
N NUMBER(3):=0;
BEGIN
WHILE N <100
LOOP
N:=N+2;
DBMS_OUTPUT.PUT_LINE(N);
END LOOP;
END;

26. Write a program to print the odd numbers from 1 to 100


27.
28.
29.
30.
31.
32.
33.
34.

DECLARE
N NUMBER(3):=1;
BEGIN
WHILE N <=100
LOOP
N:=N+2;
DBMS_OUTPUT.PUT_LINE(N);
END LOOP;
END;

35. write a program for multiplication table


36. DECLARE
37. A NUMBER(2):=&A;
38. B NUMBER(2):=1;

39.
40.
41.
42.
43.
44.
45.
46.

C NUMBER(3);
BEGIN
WHILE B <=10
LOOP
C:=A*B;
DBMS_OUTPUT.PUT_LINE(A||'*'||B||'='||C);
B:=B+1;
END LOOP;
END;

47. write a program to find the sum of numbers from 1 to 100


48.
49.
50.
51.
52.
53.
54.
55.
56.
57.

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;

58. Write a program to find the sum of all odd numbers from 1 to 100
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.

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;

69. Write a program to find the sum of all even numbers from 1 to 100
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.

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;

80. Write a program to accept a number and find how many digits it contain

81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.

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;

93. Write a program to accept a number and find the sum of the digits
94. DECLARE
95. N NUMBER(5):=&N;
96. S NUMBER:=0;
97. R NUMBER(2):=0;
98. BEGIN
99. WHILE N !=0
100. LOOP
101. R:=MOD(N,10);
102. S:=S+R;
103. N:=TRUNC(N/10);
104. END LOOP;
105. DBMS_OUTPUT.PUT_LINE('SUM OF DIGITS OF GIVEN NUMBER IS '||S);
END;

106.

Write a program to accept a number and print it in reverse order

107. DECLARE
108. N NUMBER(5):=&N;
109. REV NUMBER(5):=0;
110. R NUMBER(5):=0;
111. BEGIN
112. WHILE N !=0
113. LOOP
114. R:=MOD(N,10);
115. REV:=REV*10+R;
116. N:=TRUNC(N/10);
117. END LOOP;
118. DBMS_OUTPUT.PUT_LINE('THE REVERSE OF A GIVEN NUMBER IS '||REV);
END;

119.

Write a program to accept a no and check whether it is Armstrong number or not

120.

Write a porgram to generate all the Armstrong numbers from 1 to 1000

121.

Write a program to generate all prime numbers between 1 to 100

122.

Write a program to aceept a number and check whether it is prime number or not

123.

Write a program to display the fibonacci series from 1 to 10

124.

Write a program to aceept a number and print it in binary format

125.

Write a program to accept a number and find the factorial of the number

126.

Find the factorials of numbers from 1 to 10

127. DECLARE
128. FACT NUMBER:=1;
129. V VARCHAR2(100);
130. BEGIN
131. FOR I IN 1..10
132. LOOP
133. FOR J IN 1..I
134. LOOP
135. FACT:=FACT*J;
136. V:=J||'*'||V;
137. END LOOP;
138. DBMS_OUTPUT.PUT_LINE(RTRIM(V,'*')||'='||FACT);
139. FACT:=1;
140. V:=NULL;
141. END LOOP;
END;

142.

Write a program to aceept a number and display it in the Octal format

143. DECLARE
144. N NUMBER(2):=&N;
145. R NUMBER(2);
146. V VARCHAR2(1000);
147. BEGIN
148. WHILE N>0
149. LOOP
150. R:=MOD(N,8);
151. V:=R||V;
152. N:=TRUNC(N/8);
153. END LOOP;
154. DBMS_OUTPUT.PUT_LINE('OCTAL OF A GIVEN NUMBER IS '||V);
END;

155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.

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);

166. END LOOP;


167. DBMS_OUTPUT.PUT_LINE('*********************');
168. END LOOP;
END;

169.
Write a program to accept the temp in Centigrade and convert it into
Fahrenheit(c=F-32/1.8)
170. DECLARE
171. C NUMBER:=&C;
172. F NUMBER;
173. BEGIN
174. F:=C*1.8+32;
175. DBMS_OUTPUT.PUT_LINE('THE FARENHETT OF GIVEN OC IS '||F);
END;

176.

Write a program to calculate the area of a triangle by accepting the 3 sides

177. (s=(a+b+c)/2 area=sqrt(s*(s-a)*(s-b)*(s-c)))


178. DECLARE
179. S NUMBER;
180. A NUMBER:=&A;
181. B NUMBER:=&B;
182. C NUMBER:=&C;
183. AREA NUMBER(7,2);
184. BEGIN
185. S:=(A+B+C)/2;
186. AREA:=SQRT(S*(S-A)*(S-B)*(S-C));
187. DBMS_OUTPUT.PUT_LINE('THE AREA OF TRIANGLE IS '||AREA);
END;

188.
Write a program to calculate the area of a circle by accepting the radius and unit
of measurearea=PI*r2
189. DECLARE
190. R NUMBER:=&R;
191. AREA NUMBER(7,2);
192. BEGIN
193. AREA:=(22/7)*R*R;
194. DBMS_OUTPUT.PUT_LINE('THE AREA OF CIRCLE IS '||AREA);
END;

195.

Write a program to calculate the perimeter of a circle(perimeter=2*PI*r)

196. DECLARE
197. R NUMBER:=&R;
198. PERIMETER NUMBER(7,2);
199. BEGIN
200. PERIMETER:=2*(22/7)*R;
201. DBMS_OUTPUT.PUT_LINE('THE PERIMETER OF CIRCLE IS '||PERIMETER);
END;

202.
Write a program to accept the 3 sides of the triangle and display the type of
triangle
203. DECLARE
204. A NUMBER(4,2):=&A;
205. B NUMBER(4,2):=&B;
206. C NUMBER(4,2):=&C;
207. PERIMETER NUMBER(7,2);
208. BEGIN
209. IF (A=B AND B=C AND C=A) THEN
210. DBMS_OUTPUT.PUT_LINE('EQUILATERAL TRIANGLE');
211. ELSIF A=B OR A=C OR C=B THEN
212. DBMS_OUTPUT.PUT_LINE('ISOSOCELESS TRIANGLE');
213. ELSE
214. DBMS_OUTPUT.PUT_LINE('SCALEN TRIANGLE');
215. END IF;
END;

216.

Write a program accept the value of A,B&C display which is greater

217. DECLARE
218. A NUMBER(4,2):=&A;
219. B NUMBER(4,2):=&B;
220. C NUMBER(4,2):=&C;
221. BEGIN
222. IF (A>B AND A>C) THEN
223. DBMS_OUTPUT.PUT_LINE('A IS GREATER '||''||A);
224. ELSIF B>C THEN
225. DBMS_OUTPUT.PUT_LINE('B IS GREATE '||''||B);
226. ELSE
227. DBMS_OUTPUT.PUT_LINE('C IS GREATER '||''||C);
228. END IF;
END;

229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.

246.

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;

.Write a program aceepts the value of A,B and swap the nos and print the values

247. DECLARE
248. A NUMBER(2):=&A;
249. B NUMBER(2):=&B;
250. FLAG NUMBER(2);
251. BEGIN
252. FLAG:=A;
253. A:=B;
254. B:=FLAG;
255. DBMS_OUTPUT.PUT_LINE('A '||'= '||A||' AND '||''||'B '||'= '||B);
END;

256.

Write a program to accept the values of A , B and swap the numbers and print the

257. values
258. without using third variable
259. DECLARE
260. A NUMBER(2):=&A;
261. B NUMBER(2):=&B;
262. FLAG NUMBER(2);
263. BEGIN
264. FLAG:=A;
265. A:=B;
266. B:=FLAG;
267. DBMS_OUTPUT.PUT_LINE('A '||'= '||A||' AND '||''||'B '||'= '||B);
END;

268.

Write a program to accept the side of a square and calculate the area area =a2

269. DECLARE
270. A NUMBER:=&A;
271. AREA NUMBER(5);
272. BEGIN
273. AREA:=A*A;
274. DBMS_OUTPUT.PUT_LINE('AREA OF A SQUARE IS '||''||AREA);
END;

275.
Write a program to accept principle amount ,rate,time calculate the simple interest
si=(p*t*r)/100
276. DECLARE
277. P NUMBER(6,2):=&P;
278. R NUMBER(6,2):=&R;
279. T NUMBER(6,2):=&T;
280. SI NUMBER(6,2);
281. BEGIN
282. SI:=(P*R*T)/100;
283. DBMS_OUTPUT.PUT_LINE('SIMPLE INTEREST IS '||''||SI);
END;

284.

Erite a program to aceept the principle amount,rate,time and find the compound

285. interest
286. ci=p*(1+r/100)n
287. DECLARE

288. P NUMBER(6,2):=&P;
289. R NUMBER(6,2):=&R;
290. T NUMBER(6,2):=&T;
291. CI NUMBER(6,2);
292. BEGIN
293. CI:=P*POWER(1+(R/100),T);
294. DBMS_OUTPUT.PUT_LINE('COMPOUND INTEREST IS '||CI);
END;

295.

WAP to calculate the sum of 1!+2!+......+n!

296. DECLARE
297. N NUMBER:=&N;
298. S NUMBER:=0;
299. F NUMBER:=1;
300. BEGIN
301. FOR I IN 1..N
302. LOOP
303. FOR J IN 1..I
304. LOOP
305. F:=F*J;
306. END LOOP;
307. S:=S+F;
308. F:=1;
309. END LOOP;
310. DBMS_OUTPUT.PUT_LINE('SUM OF FACT IS '||S);
END;

311.

WAP to calculate the sum of 1+1/2+1/3+......+1/n

312. DECLARE
313. N NUMBER:=&N;
314. A NUMBER;
315. S NUMBER(6,2):=0;
316. BEGIN
317. FOR I IN 1..N
318. LOOP
319. A:=1/I;
320. S:=S+A;
321. END LOOP;
322. DBMS_OUTPUT.PUT_LINE('SUM OF NO ARE '||S);
END;

323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.

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;

334. END LOOP;


335. S:=S+(1/F);
336. END LOOP;
337. DBMS_OUTPUT.PUT_LINE('SUM IS '||S);
END;

338.

WAP to calculate the sum of 1/1!+2/2!+......+n/n!

339. DECLARE
340. N NUMBER(4):=&N;
341. S NUMBER(6,2):=0;
342. F NUMBER(4):=1;
343. BEGIN
344. FOR I IN 1..N
345. LOOP
346. FOR J IN 1..I
347. LOOP
348. F:=F*J;
349. END LOOP;
350. S:=S+(I/F);
351. END LOOP;
352. DBMS_OUTPUT.PUT_LINE('SUM OF FACT IS '||S);
END;

353.

Write a program to display the months between two dates of a year

354. DECLARE
355. D DATE:='&D';
356. D1 DATE:='&D1';
357. BEGIN
358. WHILE D < D1
359. LOOP
360. DBMS_OUTPUT.PUT_LINE(TO_CHAR(D,'MONTH'));
361. D:=ADD_MONTHS(D,1);
362. END LOOP;
END;

363.

Write a program to accept the date and print the weekdays from the given date

364. DECLARE
365. D DATE:='&D';
366. WD DATE;
367. BEGIN
368. WD:=D+6;
369. WHILE D <= WD
370. LOOP
371. DBMS_OUTPUT.PUT_LINE(TO_CHAR(D,'DAY'));
372. D:=D+1;
373. END LOOP;
END;

374.
WAP to accept the date and print the weekdays from the given date along with
date format

375. DECLARE
376. D DATE:='&D';
377. WD DATE;
378. BEGIN
379. WD:=D+6;
380. WHILE D <= WD
381. LOOP
382. DBMS_OUTPUT.PUT_LINE(TO_CHAR(D,'DAY')||D);
383. D:=D+1;
384. END LOOP;
END;

385.

Writa a program to accept a year and check whether it is leap year or not

386.

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;

387.

Write a program to accept a year and display all sundays along with the date

388. DECLARE
389. Y NUMBER(4):=&YYYY;
390. A DATE;
391. B DATE;
392. I NUMBER(2):=1;
393. BEGIN
394. A:=TO_DATE('01-JAN-'||Y,'DD-MON-YYYY');
395. B:=LAST_DAY(ADD_MONTHS(A,11));
396. WHILE A <= B
397. LOOP
398. IF TO_CHAR(A,'D')=1 THEN
399. DBMS_OUTPUT.PUT_LINE(LPAD(I,2,'0')||'-'||UPPER(TO_CHAR(A,'DAY'))||A);
400. I:=I+1;
401. END IF;
402. A:=A+1;
403. END LOOP;
END;

404.

WAP to accept a string and count how many vowels present in the string

405. DECLARE
406. V VARCHAR2(300):='&V';
407. CNT NUMBER(5):=0;

408. C CHAR;
409. BEGIN
410. FOR I IN 1..LENGTH(V)
411. LOOP
412. C:=SUBSTR(V,I,1);
413. IF C IN ('A','E','I','O','U') THEN
414. CNT:=CNT+1;
415. END IF;
416. END LOOP;
417. DBMS_OUTPUT.PUT_LINE('NO OF VOWELS PRESENT = '||CNT);
END;

418.
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
419. DECLARE
420. D DATE:='&YEAR';
421. Y VARCHAR2(20);
422. CNT NUMBER(5):=0;
423. V VARCHAR2(20);
424. BEGIN
425. Y:=TO_CHAR(D,'YYYY');
426. D:=TO_DATE('01-JAN-'||Y);
427. IF MOD(Y,4)=0 AND MOD(Y,100)!=0 OR MOD(Y,400)=0 THEN
428. FOR I IN 1..366
429. LOOP
430. V:=TO_CHAR(D,'D');
431. IF V=1 THEN
432. CNT:=CNT+1;
433. END IF;
434. D:=D+1;
435. DBMS_OUTPUT.PUT_LINE('NO OF VOWELS PRESENT = '||CNT);
436. END LOOP;
END;

437.

Write a program to accept a char and check it is vowel or consonant

438. DECLARE
439. C CHAR:='&C';
440. BEGIN
441. IF C='A' OR C='E' OR C='I' OR C='O' OR C='U' THEN
442. DBMS_OUTPUT.PUT_LINE('VOWEL');
443. ELSE
444. DBMS_OUTPUT.PUT_LINE('CONSONANT');
445. END IF;
END;

446.
447.
448.
449.
450.
451.

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;

452. BEGIN
453. IF
454. POWER(A,3)+POWER(B,3)=POWER(C,3)+POWER(D,3) THEN
455. DBMS_OUTPUT.PUT_LINE(A||CHR(179)||'+'||B||CHR(179)||'='||C||
CHR(179)||'+'||D||CHR(179));
456. ELSE
457. DBMS_OUTPUT.PUT_LINE(A||CHR(179)||'+'||B||CHR(179)||'!='||C||
CHR(179)||'+'||D||CHR(179));
458. END IF;
END;

459.

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

460. DECLARE
461. LMR NUMBER(5):=&LMR;
462. CMR NUMBER(5):=&CMR;
463. TOT NUMBER(5):=0;
464. BILL NUMBER(7,2):=0;
465. BEGIN
466. TOT:=CMR-LMR;
467. IF TOT <= 100 THEN
468. BILL:=TOT*.50;
469. ELSIF TOT >100 AND TOT <= 200 THEN
470. BILL:=(100*.50)+((TOT-100)*.75);
471. ELSE
472. BILL:=(100*.50)+(100*.75)+(TOT-200)*1.25;
473. END IF;
474. DBMS_OUTPUT.PUT_LINE('TOTAL UNIT CONSUMED '||TOT);
475. DBMS_OUTPUT.PUT_LINE('TOTAL BILL AMOUNT '||BILL);
END;

476.
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

477.
478.
479.
480.

DECLARE
M1 NUMBER(2):=&M1;
M2 NUMBER(2):=&M2;
M3 NUMBER(2):=&M3;

481. TOTMARK NUMBER(5,2);


482. AVE NUMBER(5,2):=0;
483. BEGIN
484. TOTMARK:=M1+M2+M3;
485. AVE:=TOTMARK/3;
486. IF AVE>=60 THEN
487. DBMS_OUTPUT.PUT_LINE('THE DIVISION IS FIRST '||AVE);
488. ELSIF AVE<60 AND AVE>=50 THEN
489. DBMS_OUTPUT.PUT_LINE('THE DIVISION IS SECOND '||AVE);
490. ELSIF AVE<50 AND AVE>=35 THEN
491. DBMS_OUTPUT.PUT_LINE('THE DIVISION IS THIRD '||AVE);
492. ELSE
493. DBMS_OUTPUT.PUT_LINE('FAIL '||AVE);
494. END IF;
END;

495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.

508.

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;

WAP to accept a string and print it in reverse order

509. DECLARE
510. STR VARCHAR2(100):='&sTR';
511. STR1 VARCHAR2(100);
512. N NUMBER(5);
513. L VARCHAR2(20);
514. BEGIN
515. N:=LENGTH(STR);
516. FOR I IN 1..N
517. LOOP
518. L:=SUBSTR(STR,I,1);
519. STR1:=L||STR1;
520. END LOOP;
521. DBMS_OUTPUT.PUT_LINE(STR1);
END;

522.
523.
524.
525.
526.
527.

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);

528.
529.
530.
531.
532.
533.
534.
535.
536.
537.

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;

538.
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
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.

558.
559.
560.
561.
562.
563.
564.
565.
566.

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;

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;

567.
WAP to accept the cost price and selling price of an item and find the loss or
profit
568.
569.
570.
571.
572.
573.

DECLARE
CP NUMBER(25,2):=&CP;
SP NUMBER(25,2):=&SP;
AMT NUMBER(7,2);
BEGIN
IF CP < SP THEN

574.
575.
576.
577.
578.
579.
580.

AMT:=SP-CP;
DBMS_OUTPUT.PUT_LINE('PROFIT IS '||AMT);
ELSE
AMT:=CP-SP;
DBMS_OUTPUT.PUT_LINE('LOSS IS '||AMT);
END IF;
END;

581.
Writ a program to generate the following series 53 53 53 53 53 43 43 43 43 33 33
33 23 23 13
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.

595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.

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;

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;

608.
WAP to accept two nos and input and find one no is raised to another one (without
using any function)
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.

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;

620.
621.
622.
623.
624.
625.
626.
627.
628.

629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.

642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.

663.

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;

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;

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;

WAP to accept a no and find the sum in a single digit

664. DECLARE
665. N NUMBER(4):=&N;
666. S NUMBER(10):=0;

667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.

679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.

690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.

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;

Ente 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;

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;

702.
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
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.

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;

713.
714.
715.
716.

717.
718.
719.
720.
721.
722.
723.
724.
725.
726.
727.
728.
729.
730.
731.
732.
733.
734.
735.
736.
737.
738.
739.
740.
741.
742.
743.

744.
745.
746.
747.
748.
749.
750.
751.
752.
753.
754.
755.
756.

757.
758.
759.
760.
761.

END IF;
TAMT:=BILL-DIS;
DBMS_OUTPUT.PUT_LINE('THE TOTAL AMOUNT IS '||TAMT);
END;

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;

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;

Write a program to find out the series 12+22+32+42+....++n2


DECLARE
N NUMBER:=&N;
A NUMBER:=1;
B NUMBER:=2;

762.
763.
764.
765.
766.
767.
768.
769.
770.
771.
772.
773.
774.
775.
776.
777.
778.

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;

779.
Write a program to accep the time in HH & MIN format and find the total
senconds
780. DECLARE
781. H NUMBER:=&HOUR;
782. M NUMBER:=&MINUTE;
783. S NUMBER(10):=0;
784. BEGIN
785. S:=(H*60*60)+(M*60);
786. DBMS_OUTPUT.PUT_LINE(H||' HOURS '||M||' MINUTES '||'IS'||S||'
SECONDS');
787. END;

788.
ft

WAP to accept the distance between two cities in km and convert into mts ,cm &

789.
790.
791.
792.
793.
794.
795.
796.
797.
798.
799.
800.
801.

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;

802.

Write a program to find the series x+x2/2!+x3/3!+.....+xn/n!

803.
804.
805.
806.

DECLARE
N NUMBER:=&N;
X NUMBER:=&X;
S NUMBER:=0;

807.
808.
809.
810.
811.
812.
813.
814.
815.
816.
817.
818.
819.

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;

820.
Write a program to accept the population of hyderabad each year the population
increases 2% after 4y what is the population of hyd
821. DECLARE
822. P NUMBER:=&P;
823. L NUMBER;
824. BEGIN
825. FOR J IN 1..4
826. LOOP
827. L:=P*2/100;
828. P:=P+L;
829. END LOOP;
830. DBMS_OUTPUT.PUT_LINE('POPULATION OF HYDERABAD AFTER 4 YEARS IS '||
TRUNC(P));
831. END;

832.
833.
834.
835.
836.
837.
838.
839.
840.
841.
842.
843.
844.
845.
846.
847.
848.
849.
850.
851.

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;

852.
Accept a string and print in the following format O OR ORA ORAC ORACL
ORACLE

853.
854.
855.
856.
857.
858.
859.
860.
861.
862.

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;

863.
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
864.
865.
866.
867.
868.
869.
870.
871.
872.
873.
874.
875.
876.
877.

878.
879.
880.
881.
882.
883.
884.
885.
886.
887.
888.
889.
890.
891.
892.

893.
894.
895.
896.
897.
898.

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;

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;

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

899.
900.
901.
902.
903.
904.
905.
906.
907.

908.
909.
910.
911.
912.
913.
914.
915.
916.
917.
918.
919.
920.
921.
922.

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;

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;

923.
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
924.
925.
926.
927.
928.
929.
930.
931.
932.
933.
934.
935.
936.
937.
938.
939.
940.

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;

941.
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
942. DECLARE

943. EMPNOV NUMBER:=&EMPNOV;


944. ENAMEV EMP.ENAME%TYPE;
945. SALV EMP.SAL%TYPE;
946. HIREDATEV EMP.HIREDATE%TYPE;
947. EXP NUMBER(7,2);
948. TA NUMBER(7,2);
949. DA NUMBER(7,2);
950. HRA NUMBER(7,2);
951. LIC NUMBER(7,2);
952. GROSS NUMBER(7,2);
953. S NUMBER:=0;
954. BEGIN
955. SELECT ENAME,SAL,HIREDATE INTO ENAMEV,SALV,HIREDATEV FROM EMP WHERE
EMPNO=EMPNOV;
956. EXP:=ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATEV)/12,3);
957. TA:=SALV*30/100;
958. DA:=SALV*20/100;
959. HRA:=SALV*15/100;
960. LIC:=SALV*5/100;
961. GROSS:=SALV+TA+DA+HRA-LIC;
962. DBMS_OUTPUT.PUT_LINE('EMPNO '||EMPNOV);
963. DBMS_OUTPUT.PUT_LINE('ENAME '||ENAMEV);
964. DBMS_OUTPUT.PUT_LINE('SALARY '||SALV);
965. DBMS_OUTPUT.PUT_LINE('EXPERIENCE '||EXP);
966. DBMS_OUTPUT.PUT_LINE('TA '||TA);
967. DBMS_OUTPUT.PUT_LINE('DA '||DA);
968. DBMS_OUTPUT.PUT_LINE('HRA '||HRA);
969. DBMS_OUTPUT.PUT_LINE('LIC '||LIC);
970. DBMS_OUTPUT.PUT_LINE('GROSS '||GROSS);
971. END;

972.
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
973.
974.
975.
976.
977.
978.
979.
980.
981.
982.
983.
984.
985.
986.
987.
988.
989.
990.
991.
992.
993.
994.

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;

995.
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;
996.

WAP to accept a empno and display empno,name,sal,exp,dname,grade and loc.

997. DECLARE
998. EMPNOV NUMBER:=&EMPNO;
999. ENAMEV EMP.ENAME%TYPE;
1000.
HIREDATEV DATE;
1001.
SALV EMP.SAL%TYPE;
1002.
EXP NUMBER;
1003.
DNAMEV DEPT.DNAME%TYPE;
1004.
GRADEV SALGRADE.GRADE%TYPE;
1005.
BEGIN
1006.
SELECT ENAME,SAL,HIREDATE,DNAME,GRADE INTO
ENAMEV,SALV,HIREDATEV,DNAMEV,GRADEV FROM EMP,DEPT,SALGRADE
1007.
WHERE EMPNO=EMPNOV AND EMP.DEPTNO=DEPT.DEPTNO AND SAL BETWEEN
LOSAL AND HISAL;
1008.
EXP:=ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATEV)/12,3);
1009.
DBMS_OUTPUT.PUT_LINE('EMPNO '||EMPNOV);
1010.
DBMS_OUTPUT.PUT_LINE('ENAME '||ENAMEV);
1011.
DBMS_OUTPUT.PUT_LINE('SALARY '||SALV);
1012.
DBMS_OUTPUT.PUT_LINE('EXPERIENCE '||EXP||' YEARS');
1013.
DBMS_OUTPUT.PUT_LINE('DNAME '||DNAMEV);
1014.
DBMS_OUTPUT.PUT_LINE('GRADE '||GRADEV);
1015.
END;

1016.
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
1017.
DECLARE
1018.
EMPNOV NUMBER:=&EMPNO;
1019.
ENAMEV EMP.ENAME%TYPE;
1020.
HIREDATEV DATE;
1021.
SALV EMP.SAL%TYPE;
1022.
EXP NUMBER;
1023.
DNAMEV DEPT.DNAME%TYPE;
1024.
GRADEV SALGRADE.GRADE%TYPE;
1025.
BEGIN
1026.
SELECT ENAME,SAL,HIREDATE,DNAME,GRADE INTO
ENAMEV,SALV,HIREDATEV,DNAMEV,GRADEV FROM EMP,DEPT,SALGRADE
1027.
WHERE EMPNO=EMPNOV AND EMP.DEPTNO=DEPT.DEPTNO AND SAL BETWEEN
LOSAL AND HISAL;
1028.
EXP:=ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATEV)/12,3);
1029.
DBMS_OUTPUT.PUT_LINE('EMPNO '||EMPNOV);
1030.
DBMS_OUTPUT.PUT_LINE('ENAME '||ENAMEV);
1031.
DBMS_OUTPUT.PUT_LINE('SALARY '||SALV);
1032.
DBMS_OUTPUT.PUT_LINE('EXPERIENCE '||EXP||' YEARS');
1033.
DBMS_OUTPUT.PUT_LINE('DNAME '||DNAMEV);
1034.
DBMS_OUTPUT.PUT_LINE('GRADE '||GRADEV);
1035.
END;

1036.
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
1037.
DECLARE
1038.
EMPNOV NUMBER:=&EMPNO;
1039.
DNAMEV VARCHAR2(20);
1040.
DNAMEVV VARCHAR2(20);
1041.
BEGIN
1042.
SELECT DNAME INTO DNAMEV FROM EMP,DEPT WHERE EMPNO=EMPNOV AND
EMP.DEPTNO=DEPT.DEPTNO;
1043.
IF DNAMEV='ACCOUNTING' THEN
1044.
DNAMEVV:='RESEARCH';
1045.
ELSIF DNAMEV='RESEARCH' THEN
1046.
DNAMEVV:='SALES';
1047.
ELSIF DNAMEV='SALES' THEN
1048.
DNAMEVV:='OPERATIONS';
1049.
ELSIF DNAMEV='OPERATIONS' THEN
1050.
DNAMEVV:='ACCOUNTING';
1051.
END IF;
1052.
UPDATE EMP SET DEPTNO=(SELECT DEPTNO FROM DEPT WHERE
DNAME=DNAMEVV) WHERE EMPNO=EMPNOV;
1053.
END;

1054.
WAP to accept the empno and display all the details of emp. If emp doesnot exist
display the appreciate message
1055.
1056.
1057.
1058.
1059.
1060.
1061.
1062.
1063.
1064.
1065.
1066.
1067.
1068.
1069.
1070.
1071.

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;

1072.

WAP to accept the empno and print all the details of emp,dept and salgrade

1073.
1074.
1075.
1076.
1077.
1078.
1079.

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;

1080.
HISAL;
1081.
1082.
1083.
1084.
1085.
1086.
1087.
1088.

SELECT * INTO S FROM SALGRADE WHERE E.SAL BETWEEN LOSAL AND


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;

1089.
WAP to accept the mgrno and display the empno,ename,sal,dname and grade of
all emps working under that mgr
1090.
1091.
1092.
1093.
MGR=MGRV
1094.
1095.
1096.
1097.
1098.
1099.
1100.
1101.
1102.
1103.
1104.
1105.
1106.
1107.
1108.

1109.

DECLARE
MGRV NUMBER:=&MGRV;
CURSOR EMPCUR IS
SELECT EMPNO,ENAME,SAL,DEPTNO,GRADE FROM EMP,SALGRADE WHERE
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;

WAP to accept the empno and display the exp with minimum 3 decimal places

1110.
DECLARE
1111.
EMPNOV NUMBER:=&EMPNOV;
1112.
HIREDATEV DATE;
1113.
EXPV NUMBER(10,5);
1114.
BEGIN
1115.
SELECT HIREDATE INTO HIREDATEV FROM EMP WHERE EMPNO=EMPNOV;
1116.
EXPV:=ROUND(MONTHS_BETWEEN(SYSDATE,HIREDATEV)/12,3);
1117.
DBMS_OUTPUT.PUT_LINE('EXPERIENCE OF EMP'||EMPNOV||' IS '||
EXPV||' YEARS ');
1118.
END;
1119.

1120.
1
12
123

Write a program to print the following series

1234
12345
1121.
1122.
1123.
1124.
1125.
1126.
1127.
1128.
1129.
1130.
1131.
1132.
1133.

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;

1134.
Write a program to print the following series
1
21
321
4321
54321
1135.
1136.
1137.
1138.
1139.
1140.
1141.
1142.
1143.
1144.
1145.
1146.
1147.

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;

1148.
Write a program to print the following series
12345
1234
123
12
1
1149.
1150.
1151.
1152.
1153.
1154.
1155.

DECLARE
V VARCHAR2(20);
BEGIN
FOR I IN REVERSE 1..5
LOOP
FOR J IN 1..I
LOOP

1156.
1157.
1158.
1159.
1160.
1161.

V:=V||' '||J;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;

1162.
92.Write a program to print the following series
11111
22222
33333
44444
55555
1163.
1164.
1165.
1166.
1167.
1168.
1169.
1170.
1171.
1172.
1173.
1174.
1175.

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;

1176.
Write a program to print the following series
12345
12345
12345
12345
12345
1177.
1178.
1179.
1180.
1181.
1182.
1183.
1184.
1185.
1186.
1187.
1188.
1189.

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;

1190.
Write a program to print the following series
54321

5432
543
54
5
1191.
1192.
1193.
1194.
1195.
1196.
1197.
1198.
1199.
1200.
1201.
1202.
1203.
1204.
1205.

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;

1206.
Write a program to print the following series
55555
4444
333
22
1
1207.
1208.
1209.
1210.
1211.
1212.
1213.
1214.
1215.
1216.
1217.
1218.
1219.
1220.
1221.
1222.

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;

1223.
Write a program to print the following series
1
22
333
4444
55555

1224.
1225.
1226.
1227.
1228.
1229.
1230.
1231.
1232.
1233.
1234.
1235.
1236.

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;

1237.
Write a program to print the following series
1
01
101
0101
10101
1238.
1239.
1240.
1241.
1242.
1243.
1244.
1245.
1246.
1247.
1248.
1249.
1250.
1251.
1252.

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;

1253.
Write a program to print the following series
*
**
***
****
*****
1254.
1255.
1256.
1257.
1258.
1259.
1260.
1261.
1262.

DECLARE
V VARCHAR2(20);
BEGIN
FOR I IN 1..5
LOOP
FOR J IN 1..I
LOOP
V:=V||' '||'*';
END LOOP;

1263.
1264.
1265.
1266.

DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;

1267.
Write a program to print the following series
*
**
***
****
*****
****
***
**
*
1268.
1269.
1270.
1271.
1272.
1273.
1274.
1275.
1276.
1277.
1278.
1279.
1280.
1281.
1282.
1283.
1284.
1285.
1286.
1287.
1288.
1289.

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;

1290.
Write a program to print the following series
12345
2345
345
45
5
1291.
1292.
1293.
1294.
1295.
1296.

DECLARE
V VARCHAR2(20);
BEGIN
FOR I IN 1..5
LOOP
FOR J IN I..5

1297.
1298.
1299.
1300.
1301.
1302.
1303.

LOOP
V:=V||' '||J;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V);
V:=NULL;
END LOOP;
END;

1304.
Write a program to print the following series
54321
4321
321
21
1
1305.
1306.
1307.
1308.
1309.
1310.
1311.
1312.
1313.
1314.
1315.
1316.
1317.

1318.

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;

1319.
1320.
1321.
1322.
1323.
1324.
1325.
1326.
1327.
1328.
'||M);
1329.

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
END;

1330.
WAP to accept 2 nos and find the remainder when the first number is divided by
sencond(dont use mod function)
1331.
1332.
1333.
1334.
1335.
1336.

DECLARE
A NUMBER:=&A;
B NUMBER:=&B;
C NUMBER;
M NUMBER;
BEGIN

1337.
1338.
1339.
1340.

1341.
1342.
1343.
1344.
1345.
1346.
1347.

1348.
1349.
1350.
1351.
1352.
1353.
1354.
1355.
1356.
1357.
1358.
1359.
1360.
1361.
1362.
1363.
1364.
1365.
1366.
1367.

C:=TRUNC(A/B);
M:=A-C*B;
DBMS_OUTPUT.PUT_LINE('REMAINDER IS '||M);
END;

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;

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;

1368.
WAP to display "GOOD MORNING" or "GOOD AFTERNOON" or "GOOD
NIGHT" depending upon the current time
1369.
1370.
1371.
1372.
1373.
1374.
1375.
1376.
1377.
1378.
1379.
1380.

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;

1381.

WAP to accept two strings and concat the two strings

1382.
1383.
1384.
1385.
1386.
1387.
1388.
1389.

1390.
1391.
1392.
1393.
1394.
1395.
1396.
1397.
1398.
1399.
1400.
1401.
1402.
1403.
1404.
1405.
1406.
1407.

1408.
1409.
1410.
1411.
1412.
1413.
1414.
1415.
1416.
1417.
1418.
1419.
1420.
1421.
1422.

1423.

DECLARE
STR VARCHAR2(20):='&STR';
STR1 VARCHAR2(20):='&STR1';
V VARCHAR2(40);
BEGIN
V:=STR||''||STR1;
DBMS_OUTPUT.PUT_LINE(V);
END;

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;

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;

WAP to accept the mgr and find how many emps are working under that mgr

1424.
DECLARE
1425.
MGRV EMP.MGR%TYPE:=&MGRNO;
1426.
N NUMBER:=0;
1427.
BEGIN
1428.
SELECT COUNT(*) INTO N FROM EMP WHERE MGR=MGRV;
1429.
DBMS_OUTPUT.PUT_LINE('NUMBER OF EMPLOYEE UNDER THAT MANAGER
ARE '||N);

1430.

1431.

END;

WAP to accept the empno and update the employee row on the following

1432.
If sal < 2600 then sal=sal+10% of sal make the changes in the
emp table
1433.
DECLARE
1434.
EMPNOV EMP.EMPNO%TYPE:=&EMPNO;
1435.
SALV NUMBER(7,2):=0;
1436.
BEGIN
1437.
SELECT SAL INTO SALV FROM EMP WHERE EMPNO=EMPNOV;
1438.
IF SALV < 2600 THEN
1439.
SALV:=SALV+SALV*(10/100);
1440.
END IF;
1441.
UPDATE EMP SET SAL=SALV WHERE EMPNO=EMPNOV;
1442.
DBMS_OUTPUT.PUT_LINE('EMPNO IS '||EMPNOV);
1443.
DBMS_OUTPUT.PUT_LINE('SAL IS '||SALV);
1444.
END;

1445.
Write the floyd's triangle
1
23
456
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
...............
79..............91
1446.
1447.
1448.
1449.
1450.
1451.
1452.
1453.
1454.
1455.
1456.
1457.
1458.
1459.
1460.
1461.
1462.

1463.
1464.
1465.
1466.
1467.

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;

WAP to accept the real value and print integer value only
DECLARE
N NUMBER(7,3):=&N;
A NUMBER(5);
BEGIN

1468.
1469.
1470.

A:=TRUNC(N);
DBMS_OUTPUT.PUT_LINE('REAL VALUE IS '||A);
END;

1471.

WAP to calculate the sum of n odd factorials

1472.
1473.
1474.
1475.
1476.
1477.
1478.
1479.
1480.
1481.
1482.
1483.
1484.
1485.
1486.
1487.
1488.
1489.

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;

1490.
1491.
1492.
1493.
1494.
1495.
1496.
1497.
1498.
1499.
1500.
1501.
1502.
1503.
1504.
1505.
1506.
1507.
1508.

1509.
1510.
1511.
1512.
1513.
1514.
1515.
1516.

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;

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

1517.
1518.
1519.
1520.
1521.
1522.
1523.
1524.
1525.
1526.
1527.
1528.
1529.

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;

1530.
Write a program to generate following series
12
12 22
12 22 32
12 22 32 42
12 22 32 42 52
1531.
1532.
1533.
1534.
1535.
1536.
1537.
1538.
1539.
1540.
1541.
1542.
1543.

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;

1544.

Find the roots of a quadratic equation

1545.
1546.
1547.
1548.
1549.
1550.
1551.
1552.
1553.
1554.
1555.
1556.
1557.
1558.
1559.
1560.
1561.

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

1562.
1563.
1564.

DBMS_OUTPUT.PUT_LINE('ROOTS ARE IMAGINARY');


END IF;
END;

1565.
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
1566.
1567.
1568.
1569.
1570.
1571.
1572.
1573.
1574.
1575.
1576.
1577.
1578.

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;

1579.
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
1580.
1581.
1582.
1583.
1584.
1585.
1586.
1587.
1588.
1589.
1590.
1591.
1592.

1593.
1594.
1595.
1596.
1597.
1598.
1599.
1600.
1601.
1602.
1603.
1604.
1605.
1606.
1607.

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;

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);

1608.
1609.
1610.
1611.
1612.

1613.
1614.
1615.
1616.
1617.
1618.
1619.
1620.
1621.
1622.
1623.
1624.
1625.
1626.
1627.
1628.
1629.
1630.
1631.
1632.

1633.

DBMS_OUTPUT.PUT_LINE('EMP JOB IS ' || B.JOB);


DBMS_OUTPUT.PUT_LINE('*************************');
END LOOP;
CLOSE YEAR;
END;

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;

Write a program to accept the grade and display emps belongs to that grade?

1634.
DECLARE
1635.
GRADEV SALGRADE.GRADE%TYPE:=&GRADE;
1636.
CURSOR A IS
1637.
SELECT EMP.*,GRADE FROM EMP,SALGRADE WHERE SAL BETWEEN LOSAL
AND HISAL AND GRADE=GRADEV;
1638.
B A%ROWTYPE;
1639.
BEGIN
1640.
OPEN A;
1641.
LOOP
1642.
FETCH A INTO B;
1643.
EXIT WHEN A%NOTFOUND;
1644.
DBMS_OUTPUT.PUT_LINE('EMP NO IS ' || B.EMPNO);
1645.
DBMS_OUTPUT.PUT_LINE('ENAME IS ' || B.ENAME);
1646.
DBMS_OUTPUT.PUT_LINE('SAL IS ' || B.SAL);
1647.
DBMS_OUTPUT.PUT_LINE('MGR NO IS ' || B.MGR);
1648.
DBMS_OUTPUT.PUT_LINE('COMM IS ' || B.COMM);
1649.
DBMS_OUTPUT.PUT_LINE('HIREDATE IS ' || B.HIREDATE);
1650.
DBMS_OUTPUT.PUT_LINE('GRADE IS ' || B.GRADE);
1651.
DBMS_OUTPUT.PUT_LINE('EMP JOB IS ' || B.JOB);
1652.
DBMS_OUTPUT.PUT_LINE('*************************');
1653.
END LOOP;
1654.
CLOSE A;
1655.
END;

1656.

Write a program to accept a deptno and display who are working in that dept?

1657.
1658.
1659.
1660.
1661.
1662.
1663.
1664.
1665.
1666.
1667.
1668.
1669.
1670.
1671.
1672.
1673.
1674.
1675.
1676.
1677.
1678.

1679.
1680.
1681.
1682.
1683.
1684.
1685.
1686.
1687.
1688.
1689.
1690.
1691.
1692.
1693.
1694.
1695.
1696.
1697.
1698.
1699.
1700.

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;

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;

1701.
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?
1702.
1703.
1704.
1705.
1706.

DECLARE
LOCV DEPT.LOC%TYPE:='&LOC';
TOT NUMBER(10,2):=0;
ASAL NUMBER(10,2):=0;
NOEMPS NUMBER(5):=0;

1707.
CURSOR A IS
1708.
SELECT EMP.*,LOC FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO
AND LOC=LOCV;
1709.
B A%ROWTYPE;
1710.
BEGIN
1711.
OPEN A;
1712.
LOOP
1713.
FETCH A INTO B;
1714.
NOEMPS:=NOEMPS+1;
1715.
TOT:=TOT+B.SAL;
1716.
ASAL:=TOT/NOEMPS;
1717.
EXIT WHEN A%NOTFOUND;
1718.
DBMS_OUTPUT.PUT_LINE('EMP NO IS ' || B.EMPNO);
1719.
DBMS_OUTPUT.PUT_LINE('ENAME IS ' || B.ENAME);
1720.
DBMS_OUTPUT.PUT_LINE('SAL IS ' || B.SAL);
1721.
DBMS_OUTPUT.PUT_LINE('HIREDATE IS ' || B.HIREDATE);
1722.
DBMS_OUTPUT.PUT_LINE('DEPTNO IS ' || B.DEPTNO);
1723.
DBMS_OUTPUT.PUT_LINE('EMP JOB IS ' || B.JOB);
1724.
DBMS_OUTPUT.PUT_LINE('LOC IS ' || B.LOC);
1725.
DBMS_OUTPUT.PUT_LINE('TOT IS ' || TOT);
1726.
DBMS_OUTPUT.PUT_LINE('NOEMPS IS ' || NOEMPS);
1727.
DBMS_OUTPUT.PUT_LINE('ASAL IS ' || ASAL);
1728.
DBMS_OUTPUT.PUT_LINE('*************************');
1729.
END LOOP;
1730.
CLOSE A;
1731.
END;

1732.
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?
1733.
DECLARE
1734.
LOSALV SALGRADE.LOSAL%TYPE:=&LOSAL;
1735.
HISALV SALGRADE.HISAL%TYPE:=&HISAL;
1736.
EXP NUMBER(5,2);
1737.
CURSOR A IS
1738.
SELECT EMP.*,LOC,GRADE FROM EMP,DEPT,SALGRADE WHERE
EMP.DEPTNO=DEPT.DEPTNO
1739.
AND SAL BETWEEN LOSALV AND HISALV
1740.
AND SAL BETWEEN LOSAL AND HISAL;
1741.
B A%ROWTYPE;
1742.
BEGIN
1743.
OPEN A;
1744.
LOOP
1745.
FETCH A INTO B;
1746.
EXIT WHEN A%NOTFOUND;
1747.
EXP:=MONTHS_BETWEEN(SYSDATE,B.HIREDATE)/12;
1748.
DBMS_OUTPUT.PUT_LINE('EMP NO IS ' || B.EMPNO);
1749.
DBMS_OUTPUT.PUT_LINE('ENAME IS ' || B.ENAME);
1750.
DBMS_OUTPUT.PUT_LINE('EMP JOB IS ' || B.JOB);
1751.
DBMS_OUTPUT.PUT_LINE('LOC IS ' || B.LOC);
1752.
DBMS_OUTPUT.PUT_LINE('EXP IS ' || EXP);
1753.
DBMS_OUTPUT.PUT_LINE('GRADE IS ' || B.GRADE);
1754.
DBMS_OUTPUT.PUT_LINE('*************************');
1755.
END LOOP;
1756.
CLOSE A;
1757.
END;

1758.
1759.
1760.
1761.
1762.
1763.
1764.
1765.
1766.
1767.
1768.
1769.
1770.
1771.
1772.
1773.
1774.
1775.

1776.
1777.
1778.
1779.
BY 1;
1780.
1781.
1782.
1783.
1784.
1785.
1786.
1787.
1788.
1789.
1790.
1791.
1792.
1793.
1794.
1795.
1796.
1797.
1798.
1799.
1800.
1801.
1802.
1803.
1804.
1805.
1806.
1807.

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;

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
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;

1808.
Write a program to accept empno and print all the details along with loc and
grade?
1809.
1810.
1811.
1812.
1813.
1814.
1815.
1816.
1817.
1818.
1819.
1820.
1821.
1822.
1823.
1824.
1825.
1826.
1827.
1828.
1829.
1830.
1831.

1832.
1833.
1834.
1835.
1836.
1837.

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;

Write a procedure to create your own print statement?


CREATE OR REPLACE PROCEDURE PRINT(V VARCHAR2)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(V);
END;

1838.
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?
1839.
1840.
1841.
1842.
1843.
1844.
1845.
1846.
1847.
1848.
1849.
1850.
1851.
1852.
1853.
1854.

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);

1855.
1856.
1857.
1858.
1859.
1860.
1861.
1862.
1863.
1864.
1865.
1866.
1867.
1868.
1869.
1870.
1871.
1872.

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;

1873.
Write a procedure to accept two different numbers and print all odd numbers
between the two given numbers?
1874.
1875.
1876.
1877.
1878.
1879.
1880.
1881.
1882.
1883.
1884.
1885.
1886.

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;

1887.
Write a procedure to accept two different numbers and print even numbers
between the two given numbers?
1888.
1889.
1890.
1891.
1892.
1893.
1894.
1895.
1896.
1897.
1898.
1899.
1900.

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;

1901.
Write a procedure to accept deptno as input and print the details of emps along
with grade?
1902.
1903.
1904.
1905.
1906.
1907.
1908.
1909.
1910.
1911.
1912.
1913.
1914.
1915.
1916.
1917.
1918.
1919.
1920.
1921.
1922.

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;

1923.
Write a procedure to accept a number as parameter and print its multiplication
table?
1924.
1925.
1926.
1927.
1928.
1929.
1930.
1931.
1932.
1933.
1934.
1935.

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;

1936.
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?
1937.
1938.
1939.
1940.
1941.
1942.
1943.
1944.
1945.
1946.

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

1947.
1948.
1949.
1950.
1951.
1952.
1953.
1954.
1955.
1956.

1957.
1958.
1959.
1960.
1961.
1962.
1963.
1964.
1965.
1966.
1967.
1968.
1969.
1970.
1971.
1972.
1973.

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;

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;

1974.

Write a procedure to accept a string and print it in reverse order?

1975.
1976.
1977.
1978.
1979.
1980.
1981.
1982.
1983.
1984.
1985.
1986.
1987.

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;

1988.
Write a procedure to accept the empno and print all the details of emp along with
exp, grade and loc?
1989.
1990.
1991.
1992.
1993.

CREATE OR REPLACE PROCEDURE EMP_DET(EMPNOV NUMBER)


IS
EXP NUMBER(6,2);
E EMP%ROWTYPE;
GRADEV SALGRADE.GRADE%TYPE;

1994.
LOCV DEPT.LOC%TYPE;
1995.
BEGIN
1996.
SELECT EMP.* INTO E FROM EMP WHERE EMPNO=EMPNOV;
1997.
SELECT LOC INTO LOCV FROM DEPT WHERE DEPT.DEPTNO=E.DEPTNO;
1998.
SELECT GRADE INTO GRADEV FROM SALGRADE WHERE E.SAL BETWEEN
LOSAL AND HISAL;
1999.
EXP:=MONTHS_BETWEEN(SYSDATE,E.HIREDATE)/12;
2000.
DBMS_OUTPUT.PUT_LINE('EMPNO IS '||E.EMPNO);
2001.
DBMS_OUTPUT.PUT_LINE('ENAME IS '||E.ENAME);
2002.
DBMS_OUTPUT.PUT_LINE('SAL IS '||E.SAL);
2003.
DBMS_OUTPUT.PUT_LINE('JOB IS '||E.JOB);
2004.
DBMS_OUTPUT.PUT_LINE('LOC IS '||LOCV);
2005.
DBMS_OUTPUT.PUT_LINE('GRADE IS '||GRADEV);
2006.
DBMS_OUTPUT.PUT_LINE('EXP IS '||EXP);
2007.
END;

2008.
Write a procedure to accept dname irrespective of case and print all the details of
emps?
2009.
CREATE OR REPLACE PROCEDURE DETAILS(DNAMEV VARCHAR2)
2010.
IS
2011.
CURSOR A IS
2012.
SELECT EMP.*,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO
AND DNAME=DNAMEV;
2013.
B A%ROWTYPE;
2014.
BEGIN
2015.
OPEN A;
2016.
LOOP
2017.
FETCH A INTO B;
2018.
EXIT WHEN A%NOTFOUND;
2019.
DBMS_OUTPUT.PUT_LINE('EMPNO IS '||B.EMPNO);
2020.
DBMS_OUTPUT.PUT_LINE('ENAME IS '||B.ENAME);
2021.
DBMS_OUTPUT.PUT_LINE('SAL IS '||B.SAL);
2022.
DBMS_OUTPUT.PUT_LINE('JOB IS '||B.JOB);
2023.
DBMS_OUTPUT.PUT_LINE('DNAME IS '||B.DNAME);
2024.
DBMS_OUTPUT.PUT_LINE('HIREDATE IS '||B.HIREDATE);
2025.
END LOOP;
2026.
END;

2027.
2028.
2029.
2030.
2031.
2032.
2033.
2034.
2035.
2036.
2037.
2038.
2039.
2040.
2041.

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);

2042.
2043.
2044.
2045.

2046.

END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('STRING IN REVERSE CASE IS '||V);
END;

Write a function to accept the empno and return exp with minimum 3 decimal?

2047.
NUMBER
2048.
2049.
2050.
2051.
2052.
2053.
2054.
2055.

CREATE OR REPLACE FUNCTION E_DETAILS(EMPNOV NUMBER) RETURN


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;

2056.

Write a function to accept a number and print the factorial of that number?

2057.
2058.
2059.
2060.
2061.
2062.
2063.
2064.
2065.
2066.

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;

2067.
Write a function to accept a grade and return the number of emps belongs to that
grade?
2068.
VARCHAR2
2069.
2070.
2071.
2072.
2073.
2074.
2075.

CREATE OR REPLACE FUNCTION EMPGRADE(GRADEV NUMBER) RETURN


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;

2076.
Write a program to accept the mgr number and return no of emp working at that
mgr?
2077.
2078.
2079.
2080.
2081.
2082.

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;

2083.

2084.

END;

Write a function to accept a character string and print it in reverse case?

2085.
VARCHAR2
2086.
2087.
2088.
2089.
2090.
2091.
2092.
2093.
2094.
2095.
2096.
2097.
2098.
2099.
2100.
2101.
2102.

2103.

CREATE OR REPLACE FUNCTION REVERSE(STR VARCHAR2) RETURN


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;

Write a function to accept a string and check whether it is palindrome or not?

2104.
VARCHAR2
2105.
2106.
2107.
2108.
2109.
2110.
2111.
2112.
2113.
2114.
2115.
2116.
2117.
2118.
2119.

CREATE OR REPLACE FUNCTION STRPAL1(STR VARCHAR2) RETURN


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;

2120.
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?
2121.
CREATE OR REPLACE FUNCTION EMP_DETAILS_SCRIPT (GRADEV
SALGRADE.GRADE%TYPE) RETURN VARCHAR2
2122.
IS
2123.
V VARCHAR2(30000);
2124.
CURSOR EMP_CUR IS
2125.
SELECT EMP.*,GRADE,DNAME FROM DEPT,EMP,SALGRADE
2126.
WHERE GRADE=GRADEV AND EMP.DEPTNO=DEPT.DEPTNO AND

2127.
SAL BETWEEN LOSAL AND HISAL;
2128.
EMP_CUR_V EMP_CUR%ROWTYPE;
2129.
MAXSAL EMP.SAL%TYPE:=0;
2130.
MINSAL EMP.SAL%TYPE;
2131.
AVGSAL NUMBER(6,2);
2132.
SUMSAL NUMBER(10,2):=0;
2133.
CNT NUMBER:=0;
2134.
FLAG CHAR:=0;
2135.
EX EXCEPTION;
2136.
BEGIN
2137.
OPEN EMP_CUR;
2138.
LOOP
2139.
FETCH EMP_CUR INTO EMP_CUR_V;
2140.
EXIT WHEN EMP_CUR%NOTFOUND;
2141.
IF MAXSAL < EMP_CUR_V.SAL THEN
2142.
MAXSAL:=EMP_CUR_V.SAL;
2143.
END IF;
2144.
IF FLAG=0 THEN
2145.
MINSAL:=EMP_CUR_V.SAL;
2146.
FLAG:=1;
2147.
ELSIF FLAG=1 AND MINSAL > EMP_CUR_V.SAL THEN
2148.
MINSAL:=EMP_CUR_V.SAL;
2149.
END IF;
2150.
SUMSAL:=SUMSAL+EMP_CUR_V.SAL;
2151.
CNT:=CNT+1;
2152.
ENDLOOP;
2153.
IF CNT=0 THEN
2154.
RAISE EX;
2155.
END IF;
2156.
AVGSAL:=SUMSAL/CNT;
2157.
V:='THE MAXIMUM SALARY OF GRADE' ||GRADEV||' IS'||MAXSAL||'
MINIMUM SALARY IS'||MINSAL||
2158.
'AVERAGE SALARY IS'||AVGSAL||' TOTAL EMPS WORKING FOR THIS
GRADE ARE'||CNT;
2159.
CLOSE EMP_CUR;
2160.
RETURN V;
2161.
EXCEPTION
2162.
WHEN EX THEN
2163.
RETURN 'THERE IS NO EMPLOYEE WORKING FOR THIS GRADE, CHECK AND
RE-ENTER THE GRADE....';
2164.
END;

2165.
Create a package to store the following procedure for multiplication table,evenodd, function for factorial and function for palindrome?
2166.
2167.
2168.
2169.
2170.
2171.
2172.
2173.
2174.
2175.
2176.

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

2177.
2178.
2179.
2180.
2181.
2182.
2183.
2184.
2185.
2186.
2187.
2188.
2189.
2190.
2191.
2192.
2193.
2194.
2195.
2196.
2197.
2198.
2199.
2200.
2201.
2202.
2203.
2204.
2205.
2206.
2207.
2208.
2209.
2210.
2211.
2212.
2213.
2214.
2215.
2216.
2217.
2218.
2219.
2220.
2221.
2222.
2223.

2224.
2225.
2226.
2227.
2228.
2229.
2230.

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;

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');

2231.
IF DY='SUN' THEN
2232.
RAISE_APPLICATION_ERROR(-20005,'TODAY IS SUNDAY TRANSACTION
NOT ALLOWED TODAY');
2233.
END IF;
2234.
END;

2235.

Write a database trigger halt the transaction of USER SCOTT on table EMP

2236.
2237.
2238.
2239.
2240.
SCOTT');
2241.
2242.

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
END IF;
END;

2243.
Write a database trigger halt the transaction between the the time 6pm to 10am on
table emp
2244.
CREATE OR REPLACE TRIGGER OVER_TIME_TRI
2245.
BEFORE INSERT OR DELETE OR UPDATE ON EMP
2246.
DECLARE
2247.
T NUMBER;
2248.
BEGIN
2249.
T:=TO_CHAR(SYSDATE,'HH24');
2250.
IF T NOT BETWEEN 10 AND 18 THEN
2251.
RAISE_APPLICATION_ERROR(-20007,'TIME ALREADY
OVER.....TRANSACTION NOT ALLOWED NOW');
2252.
END IF;
2253.
END;
2254.
154.Write a database trigger to halt the transaction for the
employee SALESMAN and
2255.
PRESIDENT
2256.
CREATE OR REPLACE TRIGGER SALES_PRI
2257.
BEFORE INSERT OR UPDATE OR DELETE ON EMP
2258.
FOR EACH ROW
2259.
WHEN (OLD.JOB IN ('SALESMAN','PRESIDENT') OR
2260.
NEW.JOB IN ('SALESMAN','PRESIDENT'))
2261.
BEGIN
2262.
RAISE_APPLICATION_ERROR(-20008,'TRANSACTION NOT ALLOWED FOR
SALESMAN AND PRESIDENT....');
2263.
END;

2264.
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
2265.
2266.
2267.
2268.
2269.
2270.
2271.

CREATE OR REPLACE TRIGGER TRANS_TYPE


AFTER INSERT OR UPDATE OR DELETE ON EMP
DECLARE
V VARCHAR2(50);
BEGIN
IF INSERTING THEN
V:='I';

2272.
ELSIF UPDATING THEN
2273.
V:='U';
2274.
ELSE
2275.
V:='D';
2276.
END IF;
2277.
INSERT INTO EMP_LOG VALUES
(USER,V,SYSDATE,TO_CHAR(SYSDATE,'HH:MI:SS'));
2278.
END;

2279.

Write a database trigger store the deleted data of EMP table in EMPDEL table

2280.
CREATE OR REPLACE TRIGGER DEL_TRI
2281.
BEFORE DELETE ON EMP
2282.
FOR EACH ROW
2283.
BEGIN
2284.
INSERT INTO EMPDEL
2285.
VALUES
(:OLD.EMPNO,:OLD.ENAME,:OLD.JOB,:OLD.MGR,:OLD.HIREDATE,:OLD.SAL,:OLD.COM
M,
2286.
:OLD.DEPTNO,SYSDATE,TO_CHAR(SYSDATE,'HH:MI:SS));
2287.
END;

2288.
Write a database trigger display the message when the inserting hiredate is greater
than system date
2289.
2290.
2291.
2292.
2293.
2294.
2295.
2296.

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;

2297.
Write a database trigger halt the transaction of EMP table if the deptno is does not
exist in the dept table
2298.
CREATE OR REPLACE TRIGGER DEPT_NO
2299.
BEFORE INSERT OR UPDATE OR DELETE ON EMP
2300.
FOR EACH ROW
2301.
DECLARE
2302.
DNO NUMBER:=0;
2303.
BEGIN
2304.
SELECT COUNT(*) INTO DNO FROM DEPT WHERE DEPTNO=:NEW.DEPTNO;
2305.
DBMS_OUTPUT.PUT_LINE(DNO);
2306.
IF DNO=0 THEN
2307.
RAISE_APPLICATION_ERROR(-20009,'DEPTNO NOT EXIST IN DEPT
TABLE....');
2308.
END IF;
2309.
END;

2310.

Write a database trigger add Rs 500 if the inserting salary is less than Rs 1000

2311.
2312.
2313.
2314.
2315.
2316.
2317.
2318.

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;

2319.
Write a database trigger give the appropriate message if the record exceed more
than 100 on EMP table
2320.
CREATE OR REPLACE TRIGGER EMP_OVER_REC
2321.
AFTER INSERT ON EMP
2322.
DECLARE
2323.
R NUMBER;
2324.
BEGIN
2325.
SELECT COUNT(*) INTO R FROM EMP;
2326.
IF R>=100 THEN
2327.
RAISE_APPLICATION_ERROR(-20009,'100 RECORD ALLOWED IN EMP
TABLE.....');
2328.
END IF;
2329.
END;

2330.
2331.
2332.
2333.
2334.
2335.
2336.
2337.
2338.
2339.
2340.
2341.
2342.
2343.
2344.
2345.
2346.
2347.
2348.
2349.
2350.
2351.
2352.
2353.
2354.
2355.
2356.
2357.
2358.
2359.

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

2360.
2361.
2362.
2363.
2364.
2365.
2366.
2367.

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;

You might also like