+ All Categories
Home > Documents > PLSQL Programmes

PLSQL Programmes

Date post: 14-Apr-2016
Category:
Upload: salai-sukumar
View: 133 times
Download: 17 times
Share this document with a friend
Description:
pl sql
61
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. DECLARE 19. N NUMBER(3):=0; 20. BEGIN 21. WHILE N <100 22. LOOP 23. N:=N+2; 24. DBMS_OUTPUT.PUT_LINE(N); 25. END LOOP; END; 26. Write a program to print the odd numbers from 1 to 100 27. DECLARE 28. N NUMBER(3):=1; 29. BEGIN 30. WHILE N <=100 31. LOOP 32. N:=N+2; 33. DBMS_OUTPUT.PUT_LINE(N); 34. END LOOP; END; 35. write a program for multiplication table 36. DECLARE 37. A NUMBER(2):=&A; 38. B NUMBER(2):=1;
Transcript
Page 1: PLSQL Programmes

PLSQL Programmes

1. Write a Program to print the following format 2. WELCOME TO PL/SQL PROGRAMMING3. BEGIN4. DBMS_OUTPUT.PUT_LINE('WELCOME TO PL/SQL PROGRAMMING');

END;

5. Write a program to print the numbers from 1 to 100 6. DECLARE7. N NUMBER(3):=1;8. V VARCHAR2(1000);9. BEGIN10. WHILE N <=10011. LOOP12. 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. DECLARE19. N NUMBER(3):=0;20. BEGIN21. WHILE N <10022. LOOP23. N:=N+2;24. DBMS_OUTPUT.PUT_LINE(N);25. END LOOP;

END;

26. Write a program to print the odd numbers from 1 to 100 27. DECLARE28. N NUMBER(3):=1;29. BEGIN30. WHILE N <=10031. LOOP32. N:=N+2;33. DBMS_OUTPUT.PUT_LINE(N);34. END LOOP;

END;

35. write a program for multiplication table 36. DECLARE37. A NUMBER(2):=&A;38. B NUMBER(2):=1;39. C NUMBER(3);40. BEGIN41. WHILE B <=1042. LOOP43. C:=A*B;44. DBMS_OUTPUT.PUT_LINE(A||'*'||B||'='||C);45. B:=B+1;46. END LOOP;

Page 2: PLSQL Programmes

END;

47. write a program to find the sum of numbers from 1 to 100 48. DECLARE49. N NUMBER(3):=1;50. S NUMBER(4):=0;51. BEGIN52. WHILE N <=10053. LOOP54. S:=S+N;55. N:=N+1;56. END LOOP;57. 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. DECLARE60. N NUMBER(3):=1;61. S NUMBER(4):=0;62. BEGIN63. WHILE N <=10064. LOOP65. S:=S+N;66. N:=N+2;67. END LOOP;68. 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. DECLARE71. N NUMBER(3):=0;72. S NUMBER(4):=0;73. BEGIN74. WHILE N <=10075. LOOP76. S:=S+N;77. N:=N+2;78. END LOOP;79. 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. DECLARE82. N NUMBER(5):=&N;83. CNT NUMBER:=0;84. R NUMBER(2):=0;85. BEGIN86. WHILE N !=087. LOOP88. R:=MOD(N,10);89. CNT:=CNT+1;90. N:=TRUNC(N/10);91. END LOOP;92. DBMS_OUTPUT.PUT_LINE('NUMBER OF DIGITS OF GIVEN NUMBER IS '||CNT);

END;

Page 3: PLSQL Programmes

93. Write a program to accept a number and find the sum of the digits 94. DECLARE95. N NUMBER(5):=&N;96. S NUMBER:=0;97. R NUMBER(2):=0;98. BEGIN99. WHILE N !=0100. LOOP101. 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. DECLARE108. N NUMBER(5):=&N;109. REV NUMBER(5):=0;110. R NUMBER(5):=0;111. BEGIN112. WHILE N !=0113. LOOP114. 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. DECLARE128. FACT NUMBER:=1;129. V VARCHAR2(100);130. BEGIN131. FOR I IN 1..10132. LOOP133. FOR J IN 1..I134. LOOP135. 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;

Page 4: PLSQL Programmes

142. Write a program to aceept a number and display it in the Octal format 143. DECLARE144. N NUMBER(2):=&N;145. R NUMBER(2);146. V VARCHAR2(1000);147. BEGIN148. WHILE N>0149. LOOP150. 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. Write a program to accept a number and print the multiplication tables upto soo 156. DECLARE157. N NUMBER(2):=&N;158. M NUMBER;159. BEGIN160. FOR I IN N..N+5161. LOOP162. FOR J IN 1..10163. LOOP164. M:=I*J;165. 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. DECLARE171. C NUMBER:=&C;172. F NUMBER;173. BEGIN174. 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. DECLARE179. S NUMBER;180. A NUMBER:=&A;181. B NUMBER:=&B;182. C NUMBER:=&C;183. AREA NUMBER(7,2);184. BEGIN185. 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;

Page 5: PLSQL Programmes

188. Write a program to calculate the area of a circle by accepting the radius and unit of measurearea=PI*r2

189. DECLARE190. R NUMBER:=&R;191. AREA NUMBER(7,2);192. BEGIN193. 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. DECLARE197. R NUMBER:=&R;198. PERIMETER NUMBER(7,2);199. BEGIN200. 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. DECLARE204. A NUMBER(4,2):=&A;205. B NUMBER(4,2):=&B;206. C NUMBER(4,2):=&C;207. PERIMETER NUMBER(7,2);208. BEGIN209. IF (A=B AND B=C AND C=A) THEN210. DBMS_OUTPUT.PUT_LINE('EQUILATERAL TRIANGLE');211. ELSIF A=B OR A=C OR C=B THEN212. DBMS_OUTPUT.PUT_LINE('ISOSOCELESS TRIANGLE');213. ELSE214. 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. DECLARE218. A NUMBER(4,2):=&A;219. B NUMBER(4,2):=&B;220. C NUMBER(4,2):=&C;221. BEGIN222. IF (A>B AND A>C) THEN223. DBMS_OUTPUT.PUT_LINE('A IS GREATER '||''||A);224. ELSIF B>C THEN225. DBMS_OUTPUT.PUT_LINE('B IS GREATE '||''||B);226. ELSE227. DBMS_OUTPUT.PUT_LINE('C IS GREATER '||''||C);228. END IF;

END;

229. Write a program accept a string and check whether it is palindrome or not 230. DECLARE231. S VARCHAR2(10):='&S';

Page 6: PLSQL Programmes

232. L VARCHAR2(20);233. TEMP VARCHAR2(10);234. BEGIN235. FOR I IN REVERSE 1..LENGTH(S)236. LOOP237. L:=SUBSTR(S,I,1);238. TEMP:=TEMP||''||L;239. END LOOP;240. IF TEMP=S THEN241. DBMS_OUTPUT.PUT_LINE(TEMP ||''||' IS PALINDROME');242. ELSE243. DBMS_OUTPUT.PUT_LINE(TEMP ||''||' IS NOT PALINDROME');244. END IF;245. END;246. .Write a program aceepts the value of A,B and swap the nos and print the values 247. DECLARE248. A NUMBER(2):=&A;249. B NUMBER(2):=&B;250. FLAG NUMBER(2);251. BEGIN252. 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. values258. without using third variable259. DECLARE260. A NUMBER(2):=&A;261. B NUMBER(2):=&B;262. FLAG NUMBER(2);263. BEGIN264. 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. DECLARE270. A NUMBER:=&A;271. AREA NUMBER(5);272. BEGIN273. 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. DECLARE277. P NUMBER(6,2):=&P;278. R NUMBER(6,2):=&R;279. T NUMBER(6,2):=&T;

Page 7: PLSQL Programmes

280. SI NUMBER(6,2);281. BEGIN282. 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. interest286. ci=p*(1+r/100)n287. DECLARE288. P NUMBER(6,2):=&P;289. R NUMBER(6,2):=&R;290. T NUMBER(6,2):=&T;291. CI NUMBER(6,2);292. BEGIN293. 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. DECLARE297. N NUMBER:=&N;298. S NUMBER:=0;299. F NUMBER:=1;300. BEGIN301. FOR I IN 1..N302. LOOP303. FOR J IN 1..I304. LOOP305. 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. DECLARE313. N NUMBER:=&N;314. A NUMBER;315. S NUMBER(6,2):=0;316. BEGIN317. FOR I IN 1..N318. LOOP319. A:=1/I;320. S:=S+A;321. END LOOP;322. DBMS_OUTPUT.PUT_LINE('SUM OF NO ARE '||S);

END;

323. WAP to calculate the sum of 1/1!+1/2!+.....+1/n! 324. DECLARE325. N NUMBER:=&N;326. S NUMBER(6,2):=0;

Page 8: PLSQL Programmes

327. F NUMBER:=1;328. BEGIN329. FOR I IN 1..N330. LOOP331. FOR J IN 1..I332. LOOP333. 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. DECLARE340. N NUMBER(4):=&N;341. S NUMBER(6,2):=0;342. F NUMBER(4):=1;343. BEGIN344. FOR I IN 1..N345. LOOP346. FOR J IN 1..I347. LOOP348. 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. DECLARE355. D DATE:='&D';356. D1 DATE:='&D1';357. BEGIN358. WHILE D < D1359. LOOP360. 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. DECLARE365. D DATE:='&D';366. WD DATE;367. BEGIN368. WD:=D+6;369. WHILE D <= WD370. LOOP371. DBMS_OUTPUT.PUT_LINE(TO_CHAR(D,'DAY'));372. D:=D+1;373. END LOOP;

END;

Page 9: PLSQL Programmes

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

375. DECLARE376. D DATE:='&D';377. WD DATE;378. BEGIN379. WD:=D+6;380. WHILE D <= WD381. LOOP382. 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;BEGINIF MOD(Y,4)=0 AND MOD(Y,100)!=0 OR MOD(Y,400)=0THENDBMS_OUTPUT.PUT_LINE(Y ||' IS A LEAP YEAR');ELSEDBMS_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. DECLARE389. Y NUMBER(4):=&YYYY;390. A DATE;391. B DATE;392. I NUMBER(2):=1;393. BEGIN394. A:=TO_DATE('01-JAN-'||Y,'DD-MON-YYYY');395. B:=LAST_DAY(ADD_MONTHS(A,11));396. WHILE A <= B397. LOOP398. IF TO_CHAR(A,'D')=1 THEN399. 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. DECLARE406. V VARCHAR2(300):='&V';407. CNT NUMBER(5):=0;408. C CHAR;

Page 10: PLSQL Programmes

409. BEGIN410. FOR I IN 1..LENGTH(V)411. LOOP412. C:=SUBSTR(V,I,1);413. IF C IN ('A','E','I','O','U') THEN414. 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. DECLARE420. D DATE:='&YEAR';421. Y VARCHAR2(20);422. CNT NUMBER(5):=0;423. V VARCHAR2(20);424. BEGIN425. 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 THEN428. FOR I IN 1..366429. LOOP430. V:=TO_CHAR(D,'D');431. IF V=1 THEN432. 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. DECLARE439. C CHAR:='&C';440. BEGIN441. IF C='A' OR C='E' OR C='I' OR C='O' OR C='U' THEN442. DBMS_OUTPUT.PUT_LINE('VOWEL');443. ELSE444. DBMS_OUTPUT.PUT_LINE('CONSONANT');445. END IF;

END;

446. WAP to accept A,B,C & D check whether it is Ramanujan number or not 447. DECLARE448. A NUMBER:=&A;449. B NUMBER:=&B;450. C NUMBER:=&C;451. D NUMBER:=&D;452. BEGIN453. IF454. POWER(A,3)+POWER(B,3)=POWER(C,3)+POWER(D,3) THEN455. DBMS_OUTPUT.PUT_LINE(A||CHR(179)||'+'||B||CHR(179)||'='||C||

CHR(179)||'+'||D||CHR(179));

Page 11: PLSQL Programmes

456. ELSE457. 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 unitiii. >200 units Rs.1.25 per unit

460. DECLARE461. LMR NUMBER(5):=&LMR;462. CMR NUMBER(5):=&CMR;463. TOT NUMBER(5):=0;464. BILL NUMBER(7,2):=0;465. BEGIN466. TOT:=CMR-LMR;467. IF TOT <= 100 THEN468. BILL:=TOT*.50;469. ELSIF TOT >100 AND TOT <= 200 THEN470. BILL:=(100*.50)+((TOT-100)*.75);471. ELSE472. 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 Firstii. If totmark <60 and totmark>=50 then division is second

iii. If totmark< 50 and >=35 then division is thirdiv. If totmark< 35 then fail

477. DECLARE478. M1 NUMBER(2):=&M1;479. M2 NUMBER(2):=&M2;480. M3 NUMBER(2):=&M3;481. TOTMARK NUMBER(5,2);482. AVE NUMBER(5,2):=0;483. BEGIN484. TOTMARK:=M1+M2+M3;485. AVE:=TOTMARK/3;486. IF AVE>=60 THEN487. DBMS_OUTPUT.PUT_LINE('THE DIVISION IS FIRST '||AVE);488. ELSIF AVE<60 AND AVE>=50 THEN489. DBMS_OUTPUT.PUT_LINE('THE DIVISION IS SECOND '||AVE);490. ELSIF AVE<50 AND AVE>=35 THEN491. DBMS_OUTPUT.PUT_LINE('THE DIVISION IS THIRD '||AVE);492. ELSE493. DBMS_OUTPUT.PUT_LINE('FAIL '||AVE);494. END IF;

END;

Page 12: PLSQL Programmes

495. WAP to accept a number and print its multiplication table horinzontally 496. DECLARE497. J NUMBER:=&J;498. V VARCHAR2(1000);499. K NUMBER(3);500. BEGIN501. FOR I IN 1..10502. LOOP503. K:=J*I;504. V:=V||J||'*'||I||'='||K||' ';505. END LOOP;506. DBMS_OUTPUT.PUT_LINE(V);507. END;508. WAP to accept a string and print it in reverse order 509. DECLARE510. STR VARCHAR2(100):='&sTR';511. STR1 VARCHAR2(100);512. N NUMBER(5);513. L VARCHAR2(20);514. BEGIN515. N:=LENGTH(STR);516. FOR I IN 1..N517. LOOP518. L:=SUBSTR(STR,I,1);519. STR1:=L||STR1;520. END LOOP;521. DBMS_OUTPUT.PUT_LINE(STR1);

END;

522. Write a program to accept a number and find out the sum of first and last digits 523. DECLARE524. A NUMBER(4):=&A;525. B NUMBER(5):=0;526. C NUMBER(5):=0;527. S NUMBER(5);528. BEGIN529. IF A>9 THEN530. C:=SUBSTR(A,1,1);531. B:=SUBSTR(A,LENGTH(A),1);532. S:=B+C;533. ELSE534. S:=A;535. END IF;536. DBMS_OUTPUT.PUT_LINE('SUM OF FIRST AND LAST DIGIT IS '||S);537. 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. DECLARE540. BS NUMBER(6,2):=&BS;541. TA NUMBER(6,2);542. DA NUMBER(6,2);543. HRA NUMBER(6,2);544. GS NUMBER(6,2);545. LIC NUMBER(6,2);546. NS NUMBER(8,2);

Page 13: PLSQL Programmes

547. BEGIN548. TA:=BS*(20/100);549. HRA:=BS*(30/100);550. DA:=BS*(10/100);551. LIC:=BS*(5/100);552. GS:=TA+HRA+DA;553. NS:=GS-LIC;554. DBMS_OUTPUT.PUT_LINE('EMPLOYEE BS IS '||BS);555. DBMS_OUTPUT.PUT_LINE('GROSS SALARY IS '||GS);556. DBMS_OUTPUT.PUT_LINE('NET SALARY IS '||NS);557. END;558. WAP to accept the length and breadth of a rectangle and find out the perimeter 559. DECLARE560. L NUMBER(4,2):=&L;561. B NUMBER(4,2):=&B;562. A NUMBER(4,2);563. BEGIN564. A:=2*(L+B);565. DBMS_OUTPUT.PUT_LINE('THE PERIMETER OF RECTANGLE IS '||A);566. END;567. WAP to accept the cost price and selling price of an item and find the loss or

profit 568. DECLARE569. CP NUMBER(25,2):=&CP;570. SP NUMBER(25,2):=&SP;571. AMT NUMBER(7,2);572. BEGIN573. IF CP < SP THEN574. AMT:=SP-CP;575. DBMS_OUTPUT.PUT_LINE('PROFIT IS '||AMT);576. ELSE577. AMT:=CP-SP;578. DBMS_OUTPUT.PUT_LINE('LOSS IS '||AMT);579. END IF;580. 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. DECLARE583. V VARCHAR2(20);584. BEGIN585. FOR I IN REVERSE 1..5586. LOOP587. FOR J IN 1..I588. LOOP589. V:=V||I||CHR(179);590. END LOOP;591. DBMS_OUTPUT.PUT_LINE(V);592. V:=NULL;593. END LOOP;594. END;595. WAP to accept a no in binary format and print it in decimal format 596. DECLARE597. N VARCHAR2(20):=&N;598. PRO NUMBER(10,4):=0;599. L VARCHAR2(10);

Page 14: PLSQL Programmes

600. BEGIN601. FOR I IN 1..LENGTH(N)602. LOOP603. L:=SUBSTR(N,I,1);604. PRO:=PRO+L*POWER(2,LENGTH(N)-I);605. END LOOP;606. DBMS_OUTPUT.PUT_LINE('THE DECIMAL NUMBER IS '||PRO);607. END;608. WAP to accept two nos and input and find one no is raised to another one

(without using any function) 609. DECLARE610. A NUMBER:=&A;611. B NUMBER:=&B;612. R NUMBER:=1;613. BEGIN614. FOR I IN 1..B615. LOOP616. R:=R*A;617. END LOOP;618. DBMS_OUTPUT.PUT_LINE('A RAISED POWER B IS '||R);619. END;620. WAP to accept a sentence and count the no of chars in that sentence 621. DECLARE622. STR VARCHAR2(100):='&STR';623. NO NUMBER(5):=0;624. I NUMBER;625. BEGIN626. I:=INSTR(STR,'.');627. DBMS_OUTPUT.PUT_LINE('NO OF CHAR IS '||I);628. END;629. WAP to accept two strings and display the large one among those 630. DECLARE631. STR1 VARCHAR2(100):='&STR1';632. STR2 VARCHAR2(100):='&STR2';633. BEGIN634. IF LENGTH(STR1) >LENGTH(STR2) THEN635. DBMS_OUTPUT.PUT_LINE(STR1 ||' IS GREATER');636. ELSIF LENGTH(STR1) < LENGTH(STR2) THEN637. DBMS_OUTPUT.PUT_LINE(STR2 ||' IS GREATER');638. ELSE639. DBMS_OUTPUT.PUT_LINE('BOTH STRINGS ARE EQUAL');640. END IF;641. END;642. WAP to display all the nos whose sum of digits is 9 from 1 to 9999 643. DECLARE644. N NUMBER;645. M NUMBER;646. S NUMBER:=0;647. BEGIN648. FOR I IN 1..999649. LOOP650. N:=I;651. WHILE N>0652. LOOP653. M:=MOD(N,10);654. S:=S+M;

Page 15: PLSQL Programmes

655. N:=TRUNC(N/10);656. END LOOP;657. IF S=9 THEN658. DBMS_OUTPUT.PUT_LINE(I||' ');659. END IF;660. S:=0;661. END LOOP;662. END;663. WAP to accept a no and find the sum in a single digit 664. DECLARE665. N NUMBER(4):=&N;666. S NUMBER(10):=0;667. BEGIN668. WHILE LENGTH(N)>1669. LOOP670. FOR I IN 1..LENGTH(N)671. LOOP672. S:=S+SUBSTR(N,I,1);673. END LOOP;674. N:=S;675. S:=0;676. END LOOP;677. DBMS_OUTPUT.PUT_LINE('THE SUM IN SINGLE DIGIT IS '||N);678. END;679. Ente the no of days and find out the no of years and no of days and months 680. DECLARE681. D NUMBER:=&D;682. Y NUMBER;683. M NUMBER;684. BEGIN685. Y:=TRUNC(D/365);686. M:=TRUNC(MOD(D,365)/30);687. D:=MOD(MOD(D,365),30);688. DBMS_OUTPUT.PUT_LINE(Y||' YEARS '||M||' MONTHS '||D||' DAYS');689. END;690. WAP to accept the date and print all the weekdays along with the given date 691. DECLARE692. D DATE:='&D';693. V VARCHAR2(20);694. BEGIN695. FOR I IN 1..7696. LOOP697. V:=TO_CHAR(D,'DAY')||D;698. DBMS_OUTPUT.PUT_LINE(V);699. D:=D+1;700. END LOOP;701. 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. DECLARE704. QTY NUMBER(5):=&QTY;705. UP NUMBER(6,2):=&UP;706. DIS NUMBER(6,2):=0;707. TAMT NUMBER(10,2);

Page 16: PLSQL Programmes

708. BILL NUMBER(10,2);709. BEGIN710. BILL:=QTY*UP;711. IF BILL >1000 THEN712. DIS:=BILL*20/1000;713. END IF;714. TAMT:=BILL-DIS;715. DBMS_OUTPUT.PUT_LINE('THE TOTAL AMOUNT IS '||TAMT);716. END;717. Write a program to accept a string and count the no of individual chars 718. DECLARE719. V VARCHAR2(100):='&V';720. V1 VARCHAR2(100);721. LB NUMBER;722. LA NUMBER;723. DIFF NUMBER;724. C CHAR;725. N NUMBER(5):=0;726. BEGIN727. V1:=V;728. WHILE LENGTH(V1)>0729. LOOP730. C:=SUBSTR(V1,1,1);731. LB:=LENGTH(V1);732. V1:=REPLACE(V1,C);733. LA:=NVL(LENGTH(V1),0);734. DIFF:=LB-LA;735. IF ASCII(C)=32 THEN736. DBMS_OUTPUT.PUT_LINE('SPACE'||' EXISTS '||DIFF||' TIMES');737. ELSE738. DBMS_OUTPUT.PUT_LINE(C||' EXISTS '||DIFF||' TIMES');739. END IF;740. N:=N+DIFF;741. END LOOP;742. DBMS_OUTPUT.PUT_LINE('TOTAL LENGTH OF THE GIVEN STRING '||V||'='||N);743. END;744. Write a program to display all combination of 1,2,&3 745. BEGIN746. FOR I IN 1..3747. LOOP748. FOR J IN 1..3749. LOOP750. FOR K IN 1..3751. LOOP752. DBMS_OUTPUT.PUT_LINE(I||J||K);753. END LOOP;754. END LOOP;755. END LOOP;756. END;757. Write a program to find out the series 12+22+32+42+....++n2 758. DECLARE759. N NUMBER:=&N;760. A NUMBER:=1;761. B NUMBER:=2;762. C NUMBER:=0;763. D NUMBER:=0;

Page 17: PLSQL Programmes

764. S NUMBER:=0;765. BEGIN766. WHILE A<=N767. LOOP768. C:=C+A*A;769. A:=A+2;770. END LOOP;771. WHILE B<=N772. LOOP773. D:=D+B*B;774. B:=B+2;775. END LOOP;776. S:=C-D;777. DBMS_OUTPUT.PUT_LINE('RESULT IS '||S);778. END;779. Write a program to accep the time in HH & MIN format and find the total

senconds 780. DECLARE781. H NUMBER:=&HOUR;782. M NUMBER:=&MINUTE;783. S NUMBER(10):=0;784. BEGIN785. S:=(H*60*60)+(M*60);786. DBMS_OUTPUT.PUT_LINE(H||' HOURS '||M||' MINUTES '||'IS'||S||'

SECONDS');787. END;788. WAP to accept the distance between two cities in km and convert into mts ,cm &

ft 789. DECLARE790. D NUMBER:=&D;791. M NUMBER:=0;792. CM NUMBER:=0;793. FT NUMBER:=0;794. BEGIN795. M:=D*1000;796. CM:=M*100;797. FT:=ROUND(CM/12.3);798. DBMS_OUTPUT.PUT_LINE('DISTANCE IN METERS IS '||M);799. DBMS_OUTPUT.PUT_LINE('DISTANCE IN CENTIMETERS IS '||CM);800. DBMS_OUTPUT.PUT_LINE('DISTANCE IN FOOT IS '||FT);801. END;802. Write a program to find the series x+x2/2!+x3/3!+.....+xn/n! 803. DECLARE804. N NUMBER:=&N;805. X NUMBER:=&X;806. S NUMBER:=0;807. F NUMBER:=1;808. BEGIN809. FOR I IN 1..N810. LOOP811. FOR J IN 1..I812. LOOP813. F:=F*J;814. END LOOP;815. S:=ROUND(s+(POWER(X,I)/F),3);816. F:=1;

Page 18: PLSQL Programmes

817. END LOOP;818. DBMS_OUTPUT.PUT_LINE('SUM OF NUMBER IS '||S);819. 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. DECLARE822. P NUMBER:=&P;823. L NUMBER;824. BEGIN825. FOR J IN 1..4826. LOOP827. 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. WAP to accept the 3 dates and display the most recently month among 3 dates 833. DECLARE834. D1 DATE:='&D1';835. D2 DATE:='&D2';836. D3 DATE:='&D3';837. M1 NUMBER;838. M2 NUMBER;839. M3 NUMBER;840. BEGIN841. M1:=TO_CHAR(D1,'MM');842. M2:=TO_CHAR(D2,'MM');843. M3:=TO_CHAR(D3,'MM');844. IF M1>M2 AND M1>M3 THEN845. DBMS_OUTPUT.PUT_LINE(TO_CHAR(D1,'MON')||' IS RECENT MONTH');846. ELSIF M2>M1 AND M2>M3 THEN847. DBMS_OUTPUT.PUT_LINE(TO_CHAR(D2,'MON')||' IS RECENT MONTH');848. ELSE849. DBMS_OUTPUT.PUT_LINE(TO_CHAR(D3,'MON')||' IS RECENT MONTH');850. END IF;851. END;852. Accept a string and print in the following format O OR ORA ORAC ORACL

ORACLE 853. DECLARE854. V VARCHAR2(20):='&V';855. C VARCHAR(20);856. BEGIN857. FOR I IN 1..LENGTH(V)858. LOOP859. C:=SUBSTR(V,1,I);860. DBMS_OUTPUT.PUT_LINE(C);861. END LOOP;862. 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. DECLARE865. AI NUMBER(10,2):=&ANNUALINCOME;866. TAX NUMBER(10,3):=0;

Page 19: PLSQL Programmes

867. BEGIN868. IF AI BETWEEN 36000 AND 50000 THEN869. TAX:=AI*10/100;870. ELSIF AI BETWEEN 50000 AND 100000 THEN871. TAX:=800+AI*16/100;872. ELSIF AI >100000 THEN873. TAX:=2500+AI*25/100;874. END IF;875. DBMS_OUTPUT.PUT_LINE('ANNUAL INCOME '||AI);876. DBMS_OUTPUT.PUT_LINE('TAX '||TAX);877. END;878. WAP to accept a year as i/p & find how many even number present in that year 879. DECLARE880. Y NUMBER:=&YEAR;881. A VARCHAR2(20);882. CNT NUMBER(5):=0;883. BEGIN884. FOR I IN 1..LENGTH(Y)885. LOOP886. A:=SUBSTR(Y,I,1);887. IF MOD(A,2)=0 THEN888. CNT:=CNT+1;889. END IF;890. END LOOP;891. DBMS_OUTPUT.PUT_LINE('NUMBER OF EVEN DIGIT IS '||CNT);892. END;893. WAP to accept a year as i/p & find how many odd number present in that year 894. DECLARE895. Y NUMBER:=&YEAR;896. A VARCHAR2(20);897. CNT NUMBER(5):=0;898. BEGIN899. FOR I IN 1..LENGTH(Y)900. LOOP901. A:=SUBSTR(Y,I,1);902. IF MOD(A,2)!=0 THEN903. CNT:=CNT+1;904. END IF;905. END LOOP;906. DBMS_OUTPUT.PUT_LINE('NUMBER OF EVEN DIGIT IS '||CNT);907. END;908. WAP to accept a number and calculate the sum of numbers in even places 909. DECLARE910. N NUMBER:=&NUMBER;911. A VARCHAR2(10);912. S NUMBER:=0;913. BEGIN914. FOR I IN 1..LENGTH(N)915. LOOP916. A:=SUBSTR(N,I,1);917. IF MOD(I,2)=0 THEN918. S:=S+A;919. END IF;920. END LOOP;921. DBMS_OUTPUT.PUT_LINE('SUM OF EVEN PLACE IS '||S);922. END;

Page 20: PLSQL Programmes

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. DECLARE925. EMPNOV NUMBER:=&EMPNOV;926. SALV NUMBER;927. B NUMBER(7,2);928. BEGIN929. SELECT SAL INTO SALV FROM EMP WHERE EMPNO=EMPNOV;930. IF SALV BETWEEN 500 AND 3500 THEN931. B:=SALV*10/100;932. ELSIF SALV BETWEEN 3500 AND 10000 THEN933. B:=SALV*12/100;934. ELSIF SALV>10000 THEN935. B:=SALV*13.5/100;936. END IF;937. DBMS_OUTPUT.PUT_LINE('EMPNO '||EMPNOV);938. DBMS_OUTPUT.PUT_LINE('SALARY '||SALV);939. DBMS_OUTPUT.PUT_LINE('BONUS '||B);940. 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. DECLARE943. 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. BEGIN955. 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;

Page 21: PLSQL Programmes

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. DECLARE974. INO NUMBER:=&INO;975. INAME VARCHAR2(50):='&INAME';976. QTY NUMBER(5):=&QTY;977. UP NUMBER(7,2):=&UP;978. DIS NUMBER(7,2):=0;979. BILL NUMBER(7,2);980. NET NUMBER(7,2);981. BEGIN982. BILL:=QTY*UP;983. IF BILL>500 THEN984. DIS:=BILL*2/100;985. END IF;986. NET:=BILL-DIS;987. DBMS_OUTPUT.PUT_LINE('ITEM NO '||INO);988. DBMS_OUTPUT.PUT_LINE('ITEM NAME '||INAME);989. DBMS_OUTPUT.PUT_LINE('QUANTITY '||QTY);990. DBMS_OUTPUT.PUT_LINE('UNIT PRICE '||UP);991. DBMS_OUTPUT.PUT_LINE('BILL AMT '||BILL);992. DBMS_OUTPUT.PUT_LINE('DISCOUNT '||DIS);993. DBMS_OUTPUT.PUT_LINE('NET AMT '||NET);994. 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. DECLARE998. 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. BEGIN1006. SELECT ENAME,SAL,HIREDATE,DNAME,GRADE INTO

ENAMEV,SALV,HIREDATEV,DNAMEV,GRADEV FROM EMP,DEPT,SALGRADE1007. 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

Page 22: PLSQL Programmes

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. BEGIN1026. SELECT ENAME,SAL,HIREDATE,DNAME,GRADE INTO

ENAMEV,SALV,HIREDATEV,DNAMEV,GRADEV FROM EMP,DEPT,SALGRADE1027. 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. DECLARE1038. EMPNOV NUMBER:=&EMPNO;1039. DNAMEV VARCHAR2(20);1040. DNAMEVV VARCHAR2(20);1041. BEGIN1042. SELECT DNAME INTO DNAMEV FROM EMP,DEPT WHERE EMPNO=EMPNOV AND

EMP.DEPTNO=DEPT.DEPTNO;1043. IF DNAMEV='ACCOUNTING' THEN1044. DNAMEVV:='RESEARCH';1045. ELSIF DNAMEV='RESEARCH' THEN1046. DNAMEVV:='SALES';1047. ELSIF DNAMEV='SALES' THEN1048. DNAMEVV:='OPERATIONS';1049. ELSIF DNAMEV='OPERATIONS' THEN1050. 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. DECLARE1056. EMPNOV NUMBER:=&EMPNO;1057. EMPV EMP%ROWTYPE;1058. BEGIN1059. SELECT * INTO EMPV FROM EMP WHERE EMPNO=EMPNOV;1060. DBMS_OUTPUT.PUT_LINE('EMPNO '||EMPV.EMPNO);1061. DBMS_OUTPUT.PUT_LINE('ENAME '||EMPV.ENAME);1062. DBMS_OUTPUT.PUT_LINE('JOB '||EMPV.JOB);1063. DBMS_OUTPUT.PUT_LINE('SALARY '||EMPV.SAL);1064. DBMS_OUTPUT.PUT_LINE('HIREDATE '||EMPV.HIREDATE);1065. DBMS_OUTPUT.PUT_LINE('DEPTNO '||EMPV.DEPTNO);1066. DBMS_OUTPUT.PUT_LINE('MGRNO '||EMPV.MGR);

Page 23: PLSQL Programmes

1067. DBMS_OUTPUT.PUT_LINE('COMMISSION '||EMPV.COMM);1068. EXCEPTION1069. WHEN NO_DATA_FOUND THEN1070. DBMS_OUTPUT.PUT_LINE('EMP NUMBER DOES NOT EXIST');1071. END;1072. WAP to accept the empno and print all the details of emp,dept and salgrade 1073. DECLARE1074. E EMP%ROWTYPE;1075. D DEPT%ROWTYPE;1076. S SALGRADE%ROWTYPE;1077. BEGIN1078. SELECT * INTO E FROM EMP WHERE EMPNO=&EMPNO;1079. SELECT * INTO D FROM DEPT WHERE E.DEPTNO=DEPT.DEPTNO;1080. SELECT * INTO S FROM SALGRADE WHERE E.SAL BETWEEN LOSAL AND

HISAL;1081. DBMS_OUTPUT.PUT_LINE('EMPNO '||E.EMPNO);1082. DBMS_OUTPUT.PUT_LINE('DEPTNO '||D.DEPTNO);1083. DBMS_OUTPUT.PUT_LINE('DNAME '||D.DNAME);1084. DBMS_OUTPUT.PUT_LINE('LOCATION '||D.LOC);1085. DBMS_OUTPUT.PUT_LINE('GRADE '||S.GRADE);1086. DBMS_OUTPUT.PUT_LINE('HISALARY '||S.HISAL);1087. DBMS_OUTPUT.PUT_LINE('LOWSALARY '||S.LOSAL);1088. END;1089. WAP to accept the mgrno and display the empno,ename,sal,dname and grade of

all emps working under that mgr 1090. DECLARE1091. MGRV NUMBER:=&MGRV;1092. CURSOR EMPCUR IS1093. SELECT EMPNO,ENAME,SAL,DEPTNO,GRADE FROM EMP,SALGRADE WHERE

MGR=MGRV AND SAL BETWEEN LOSAL AND HISAL;1094. X EMPCUR%ROWTYPE;1095. BEGIN1096. OPEN EMPCUR;1097. LOOP1098. FETCH EMPCUR INTO X;1099. EXIT WHEN EMPCUR%NOTFOUND;1100. DBMS_OUTPUT.PUT_LINE('EMPNO '||X.EMPNO);1101. DBMS_OUTPUT.PUT_LINE('ENAME '||X.ENAME);1102. DBMS_OUTPUT.PUT_LINE('SALARY '||X.SAL);1103. DBMS_OUTPUT.PUT_LINE('DEPTNO '||X.DEPTNO);1104. DBMS_OUTPUT.PUT_LINE('GRADE '||X.GRADE);1105. DBMS_OUTPUT.PUT_LINE('******************');1106. END LOOP;1107. CLOSE EMPCUR;1108. END;1109. WAP to accept the empno and display the exp with minimum 3 decimal places 1110. DECLARE1111. EMPNOV NUMBER:=&EMPNOV;1112. HIREDATEV DATE;1113. EXPV NUMBER(10,5);1114. BEGIN1115. 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;

Page 24: PLSQL Programmes

1119.1120. Write a program to print the following series

11 21 2 31 2 3 41 2 3 4 5

1121. DECLARE1122. V VARCHAR2(20);1123. BEGIN1124. FOR I IN 1..51125. LOOP1126. FOR J IN 1..I1127. LOOP1128. V:=V||' '||J;1129. END LOOP;1130. DBMS_OUTPUT.PUT_LINE(V);1131. V:=NULL;1132. END LOOP;1133. END;1134. Write a program to print the following series

12 13 2 14 3 2 15 4 3 2 1

1135. DECLARE1136. V VARCHAR2(20);1137. BEGIN1138. FOR I IN 1..51139. LOOP1140. FOR J IN REVERSE 1..I1141. LOOP1142. V:=V||' '||J;1143. END LOOP;1144. DBMS_OUTPUT.PUT_LINE(V);1145. V:=NULL;1146. END LOOP;1147. END;1148. Write a program to print the following series

1 2 3 4 51 2 3 41 2 31 21

1149. DECLARE1150. V VARCHAR2(20);1151. BEGIN1152. FOR I IN REVERSE 1..51153. LOOP1154. FOR J IN 1..I1155. LOOP1156. V:=V||' '||J;

Page 25: PLSQL Programmes

1157. END LOOP;1158. DBMS_OUTPUT.PUT_LINE(V);1159. V:=NULL;1160. END LOOP;1161. END;

1162. 92.Write a program to print the following series1 1 1 1 12 2 2 2 23 3 3 3 34 4 4 4 45 5 5 5 5

1163. DECLARE1164. V VARCHAR2(20);1165. BEGIN1166. FOR I IN 1..51167. LOOP1168. FOR J IN 1..51169. LOOP1170. V:=V||' '||I;1171. END LOOP;1172. DBMS_OUTPUT.PUT_LINE(V);1173. V:=NULL;1174. END LOOP;1175. END;1176. Write a program to print the following series

1 2 3 4 51 2 3 4 51 2 3 4 51 2 3 4 51 2 3 4 5

1177. DECLARE1178. V VARCHAR2(20);1179. BEGIN1180. FOR I IN 1..51181. LOOP1182. FOR J IN 1..51183. LOOP1184. V:=V||' '||J;1185. END LOOP;1186. DBMS_OUTPUT.PUT_LINE(V);1187. V:=NULL;1188. END LOOP;1189. END;1190. Write a program to print the following series

5 4 3 2 15 4 3 25 4 35 45

1191. DECLARE

Page 26: PLSQL Programmes

1192. V VARCHAR2(20);1193. BEGIN1194. FOR I IN 1..51195. LOOP1196. FOR J IN REVERSE 1..51197. LOOP1198. IF I<=J THEN1199. V:=V||' '||J;1200. END IF;1201. END LOOP;1202. DBMS_OUTPUT.PUT_LINE(V);1203. V:=NULL;1204. END LOOP;1205. END;1206. Write a program to print the following series

5 5 5 5 54 4 4 43 3 32 21

1207. DECLARE1208. V VARCHAR2(20);1209. BEGIN1210. FOR I IN REVERSE 1..51211. LOOP1212. FOR J IN 1..51213. LOOP1214. IF I>=J THEN1215. V:=V||' '||I;1216. END IF;1217. END LOOP;1218. DBMS_OUTPUT.PUT_LINE(V);1219. V:=NULL;1220. END LOOP;1221. END;1222.1223. Write a program to print the following series

12 23 3 34 4 4 45 5 5 5 5

1224. DECLARE1225. V VARCHAR2(20);1226. BEGIN1227. FOR I IN 1..51228. LOOP1229. FOR J IN 1..I1230. LOOP1231. V:=V||' '||I;1232. END LOOP;1233. DBMS_OUTPUT.PUT_LINE(V);1234. V:=NULL;1235. END LOOP;

Page 27: PLSQL Programmes

1236. END;1237. Write a program to print the following series

10 11 0 10 1 0 11 0 1 0 1

1238. DECLARE1239. A NUMBER:=1;1240. V VARCHAR2(20):=1;1241. BEGIN1242. DBMS_OUTPUT.PUT_LINE(V);1243. FOR I IN 1..41244. LOOP1245. IF SUBSTR(V,1,1)='1' THEN1246. V:='0'||V;1247. ELSE1248. V:='1'||V;1249. END IF;1250. DBMS_OUTPUT.PUT_LINE(V);1251. END LOOP;1252. END;1253. Write a program to print the following series

** ** * ** * * ** * * * *

1254. DECLARE1255. V VARCHAR2(20);1256. BEGIN1257. FOR I IN 1..51258. LOOP1259. FOR J IN 1..I1260. LOOP1261. V:=V||' '||'*';1262. END LOOP;1263. DBMS_OUTPUT.PUT_LINE(V);1264. V:=NULL;1265. END LOOP;1266. END;1267. Write a program to print the following series

** ** * ** * * ** * * * ** * * ** * ** **

1268. DECLARE

Page 28: PLSQL Programmes

1269. V VARCHAR2(20);1270. BEGIN1271. FOR I IN 1..51272. LOOP1273. FOR J IN 1..I1274. LOOP1275. V:=V||' '||'*';1276. END LOOP;1277. DBMS_OUTPUT.PUT_LINE(V);1278. V:=NULL;1279. END LOOP;1280. FOR I IN REVERSE 1..51281. LOOP1282. FOR J IN 2..I1283. LOOP1284. V:=V||' '||'*';1285. END LOOP;1286. DBMS_OUTPUT.PUT_LINE(V);1287. V:=NULL;1288. END LOOP;1289. END;1290. Write a program to print the following series

1 2 3 4 52 3 4 53 4 54 55

1291. DECLARE1292. V VARCHAR2(20);1293. BEGIN1294. FOR I IN 1..51295. LOOP1296. FOR J IN I..51297. LOOP1298. V:=V||' '||J;1299. END LOOP;1300. DBMS_OUTPUT.PUT_LINE(V);1301. V:=NULL;1302. END LOOP;1303. END;1304. Write a program to print the following series

5 4 3 2 14 3 2 13 2 12 11

1305. DECLARE1306. V VARCHAR2(20);1307. BEGIN1308. FOR I IN REVERSE 1..51309. LOOP1310. FOR J IN REVERSE 1..I1311. LOOP1312. V:=V||' '||J;

Page 29: PLSQL Programmes

1313. END LOOP;1314. DBMS_OUTPUT.PUT_LINE(V);1315. V:=NULL;1316. END LOOP;1317. END;1318. WAP to accept 2 nos and find the sum and product of the nos and print the output 1319. DECLARE1320. A NUMBER:=&A;1321. B NUMBER:=&B;1322. S NUMBER;1323. M NUMBER;1324. BEGIN1325. S:=A+B;1326. M:=A*B;1327. DBMS_OUTPUT.PUT_LINE('SUM OF '||'A'||' AND '||'B'||' IS '||S);1328. DBMS_OUTPUT.PUT_LINE('PRODUCT OF '||'A'||' AND '||'B'||' IS

'||M);1329. END;1330. WAP to accept 2 nos and find the remainder when the first number is divided by

sencond(dont use mod function) 1331. DECLARE1332. A NUMBER:=&A;1333. B NUMBER:=&B;1334. C NUMBER;1335. M NUMBER;1336. BEGIN1337. C:=TRUNC(A/B);1338. M:=A-C*B;1339. DBMS_OUTPUT.PUT_LINE('REMAINDER IS '||M);1340. END;1341. WAP to display all the ASCII characters 0-9--48-57,A-Z--65-90,a-z--97-122 1342. BEGIN1343. FOR I IN 1..2551344. LOOP1345. DBMS_OUTPUT.PUT_LINE(I||'-'||CHR(I));1346. END LOOP;1347. END;1348. Print the following format 1349. ORACLE1350. ORACL1351. ORAC1352. ORA1353. OR1354. O1355. DECLARE1356. STR VARCHAR2(10):='&STR';1357. L VARCHAR2(10);1358. N NUMBER(15);1359. BEGIN1360. N:=LENGTH(STR);1361. WHILE N>=11362. LOOP1363. L:=SUBSTR(STR,1,N);1364. N:=N-1;1365. DBMS_OUTPUT.PUT_LINE(L);1366. END LOOP;

Page 30: PLSQL Programmes

1367. END;1368. WAP to display "GOOD MORNING" or "GOOD AFTERNOON" or "GOOD

NIGHT" depending upon the current time 1369. DECLARE1370. HH NUMBER;1371. BEGIN1372. HH:=TO_CHAR(SYSDATE,'HH24');1373. IF HH>6 AND HH<12 THEN1374. DBMS_OUTPUT.PUT_LINE('GOOD MORNING');1375. ELSIF HH>=12 AND HH<18 THEN1376. DBMS_OUTPUT.PUT_LINE('GOOD AFTERNOON');1377. ELSIF HH>=18 AND HH<25 THEN1378. DBMS_OUTPUT.PUT_LINE('GOOD NIGHT');1379. END IF;1380. END;1381. WAP to accept two strings and concat the two strings 1382. DECLARE1383. STR VARCHAR2(20):='&STR';1384. STR1 VARCHAR2(20):='&STR1';1385. V VARCHAR2(40);1386. BEGIN1387. V:=STR||''||STR1;1388. DBMS_OUTPUT.PUT_LINE(V);1389. END;1390. WAP to accept a string and count the no of chars,words in that string 1391. DECLARE1392. STR VARCHAR2(20):='&STR';1393. NOC NUMBER(4):=0;1394. NOW NUMBER(4):=1;1395. S CHAR;1396. BEGIN1397. FOR I IN 1..LENGTH(STR)1398. LOOP1399. S:=SUBSTR(STR,I,1);1400. NOC:=NOC+1;1401. IF S=' ' THEN1402. NOW:=NOW+1;1403. END IF;1404. END LOOP;1405. DBMS_OUTPUT.PUT_LINE('THE NO. OF CHARS '||NOC);1406. DBMS_OUTPUT.PUT_LINE('THE NO. OF WORDS '||NOW);1407. END;1408. WAP to accept the octal number and print it in decimal format 1409. DECLARE1410. N VARCHAR2(20):='&N';1411. A NUMBER;1412. P NUMBER:=0;1413. C CHAR;1414. BEGIN1415. A:=LENGTH(N);1416. FOR I IN 1..A1417. LOOP1418. C:=SUBSTR(N,I,1);1419. P:=P+C*POWER(8,A-I);1420. END LOOP;1421. DBMS_OUTPUT.PUT_LINE('THE INTEGER OF A GIVEN OCTAL IS '||P);

Page 31: PLSQL Programmes

1422. END;1423. WAP to accept the mgr and find how many emps are working under that mgr 1424. DECLARE1425. MGRV EMP.MGR%TYPE:=&MGRNO;1426. N NUMBER:=0;1427. BEGIN1428. SELECT COUNT(*) INTO N FROM EMP WHERE MGR=MGRV;1429. DBMS_OUTPUT.PUT_LINE('NUMBER OF EMPLOYEE UNDER THAT MANAGER

ARE '||N);1430. END;1431. 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 table1433. DECLARE1434. EMPNOV EMP.EMPNO%TYPE:=&EMPNO;1435. SALV NUMBER(7,2):=0;1436. BEGIN1437. SELECT SAL INTO SALV FROM EMP WHERE EMPNO=EMPNOV;1438. IF SALV < 2600 THEN1439. 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

12 34 5 67 8 9 1011 12 13 14 1516 17 18 19 20 21...............79..............91

1446. DECLARE1447. N NUMBER:=1;1448. V VARCHAR2(100);1449. BEGIN1450. FOR I IN 1..921451. LOOP1452. FOR J IN 1..I1453. LOOP1454. V:=V||' '||N;1455. N:=N+1;1456. EXIT WHEN N=92;1457. END LOOP;1458. DBMS_OUTPUT.PUT_LINE(V);1459. EXIT WHEN N=92;1460. V:=NULL;1461. END LOOP;1462. END;1463. WAP to accept the real value and print integer value only 1464. DECLARE1465. N NUMBER(7,3):=&N;

Page 32: PLSQL Programmes

1466. A NUMBER(5);1467. BEGIN1468. A:=TRUNC(N);1469. DBMS_OUTPUT.PUT_LINE('REAL VALUE IS '||A);1470. END;1471. WAP to calculate the sum of n odd factorials 1472. DECLARE1473. N NUMBER:=&N;1474. S NUMBER:=0;1475. F NUMBER:=1;1476. BEGIN1477. FOR I IN 1..N1478. LOOP1479. IF MOD(I,2)!=0 THEN1480. FOR J IN 1..I1481. LOOP1482. F:=F*J;1483. END LOOP;1484. S:=S+F;1485. F:=1;1486. END IF;1487. END LOOP;1488. DBMS_OUTPUT.PUT_LINE('SUM '||S);1489. END;1490. WAP to calculate the sum of n even factorials 1491. DECLARE1492. N NUMBER:=&N;1493. S NUMBER:=0;1494. F NUMBER:=1;1495. BEGIN1496. FOR I IN 1..N1497. LOOP1498. IF MOD(I,2)=0 THEN1499. FOR J IN 1..I1500. LOOP1501. F:=F*J;1502. END LOOP;1503. S:=S+F;1504. F:=1;1505. END IF;1506. END LOOP;1507. DBMS_OUTPUT.PUT_LINE('SUM '||S);1508. END;1509. WAP to generate the nos which are prime and odd between 1 and 100 1510. DECLARE1511. N NUMBER;1512. CNT NUMBER:=0;1513. BEGIN1514. FOR I IN 1..1001515. LOOP1516. FOR J IN 1..I1517. LOOP1518. IF MOD(I,J)=0 THEN1519. CNT:=CNT+1;1520. END IF;1521. END LOOP;

Page 33: PLSQL Programmes

1522. IF CNT <= 2 THEN1523. IF MOD(I,2)!=0 THEN1524. DBMS_OUTPUT.PUT_LINE(I);1525. END IF;1526. END IF;1527. CNT:=0;1528. END LOOP;1529. END;1530. Write a program to generate following series

1212 2212 22 3212 22 32 4212 22 32 42 52

1531. DECLARE1532. V VARCHAR2(20);1533. BEGIN1534. FOR I IN 1..51535. LOOP1536. FOR J IN 1..I1537. LOOP1538. V:=V||' '||J||CHR(178);1539. END LOOP;1540. DBMS_OUTPUT.PUT_LINE(V);1541. V:=NULL;1542. END LOOP;1543. END;1544. Find the roots of a quadratic equation 1545. DECLARE1546. A NUMBER(4):=&A;1547. B NUMBER(4):=&B;1548. C NUMBER(4):=&C;1549. D NUMBER(8,2);1550. R1 NUMBER(8,2);1551. R2 NUMBER(8,2);1552. BEGIN1553. D:=POWER(B,2)-4*A*C;1554. IF D = 0 THEN1555. DBMS_OUTPUT.PUT_LINE('ROOTS ARE EQUAL');1556. ELSIF D > 0 THEN1557. R1:=(-B+SQRT(D))/2*A;1558. R2:=(-B-SQRT(D))/2*A;1559. DBMS_OUTPUT.PUT_LINE('FIRST ROOT IS '||R1);1560. DBMS_OUTPUT.PUT_LINE('SECOND ROOT IS '||R2);1561. ELSE1562. DBMS_OUTPUT.PUT_LINE('ROOTS ARE IMAGINARY');1563. END IF;1564. 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. DECLARE1567. A NUMBER:=&A;1568. B NUMBER:=&B;1569. V VARCHAR2(100);1570. BEGIN

Page 34: PLSQL Programmes

1571. FOR I IN A..B1572. LOOP1573. IF MOD(I,2)=0 THEN1574. V:=V||' '||I;1575. END IF;1576. END LOOP;1577. DBMS_OUTPUT.PUT_LINE(V);1578. 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. DECLARE1581. A NUMBER:=&A;1582. B NUMBER:=&B;1583. V VARCHAR2(100);1584. BEGIN1585. FOR I IN A..B1586. LOOP1587. IF MOD(I,2)!=0 THEN1588. V:=V||' '||I;1589. END IF;1590. END LOOP;1591. DBMS_OUTPUT.PUT_LINE(V);1592. END;1593. Write a program to accept a year and display the emps belongs to that year? 1594. DECLARE1595. Y NUMBER(4):=&YEAR;1596. CURSOR YEAR IS1597. SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'YYYY')=Y;1598. B YEAR%ROWTYPE;1599. BEGIN1600. OPEN YEAR;1601. LOOP1602. FETCH YEAR INTO B;1603. EXIT WHEN YEAR%NOTFOUND;1604. DBMS_OUTPUT.PUT_LINE('EMP NO IS ' || B.EMPNO);1605. DBMS_OUTPUT.PUT_LINE('EMP NAME IS ' || B.ENAME);1606. DBMS_OUTPUT.PUT_LINE('EMP SAL IS ' || B.SAL);1607. DBMS_OUTPUT.PUT_LINE('HIREDATE IS ' || B.HIREDATE);1608. DBMS_OUTPUT.PUT_LINE('EMP JOB IS ' || B.JOB);1609. DBMS_OUTPUT.PUT_LINE('*************************');1610. END LOOP;1611. CLOSE YEAR;1612. END;1613. Write a program to accept a mgr and display who are working under that mgr? 1614. DECLARE1615. MGRV NUMBER(4):=&MGR;1616. CURSOR AMGR IS1617. SELECT * FROM EMP WHERE MGR=MGRV;1618. B AMGR%ROWTYPE;1619. BEGIN1620. OPEN AMGR;1621. LOOP1622. FETCH AMGR INTO B;1623. EXIT WHEN AMGR%NOTFOUND;1624. DBMS_OUTPUT.PUT_LINE('EMP NO IS ' || B.EMPNO);1625. DBMS_OUTPUT.PUT_LINE('EMP NAME IS ' || B.ENAME);

Page 35: PLSQL Programmes

1626. DBMS_OUTPUT.PUT_LINE('EMP SAL IS ' || B.SAL);1627. DBMS_OUTPUT.PUT_LINE('HIREDATE IS ' || B.HIREDATE);1628. DBMS_OUTPUT.PUT_LINE('EMP JOB IS ' || B.JOB);1629. DBMS_OUTPUT.PUT_LINE('*************************');1630. END LOOP;1631. CLOSE AMGR;1632. END;1633. Write a program to accept the grade and display emps belongs to that grade? 1634. DECLARE1635. GRADEV SALGRADE.GRADE%TYPE:=&GRADE;1636. CURSOR A IS1637. SELECT EMP.*,GRADE FROM EMP,SALGRADE WHERE SAL BETWEEN LOSAL

AND HISAL AND GRADE=GRADEV;1638. B A%ROWTYPE;1639. BEGIN1640. OPEN A;1641. LOOP1642. 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. DECLARE1658. DEPTV EMP.DEPTNO%TYPE:=&DEPTNO;1659. CURSOR A IS1660. SELECT * FROM EMP WHERE DEPTNO=DEPTV;1661. B A%ROWTYPE;1662. BEGIN1663. OPEN A;1664. LOOP1665. FETCH A INTO B;1666. EXIT WHEN A%NOTFOUND;1667. DBMS_OUTPUT.PUT_LINE('EMP NO IS ' || B.EMPNO);1668. DBMS_OUTPUT.PUT_LINE('ENAME IS ' || B.ENAME);1669. DBMS_OUTPUT.PUT_LINE('SAL IS ' || B.SAL);1670. DBMS_OUTPUT.PUT_LINE('MGR NO IS ' || B.MGR);1671. DBMS_OUTPUT.PUT_LINE('COMM IS ' || B.COMM);1672. DBMS_OUTPUT.PUT_LINE('HIREDATE IS ' || B.HIREDATE);1673. DBMS_OUTPUT.PUT_LINE('DEPTNO IS ' || B.DEPTNO);1674. DBMS_OUTPUT.PUT_LINE('EMP JOB IS ' || B.JOB);1675. DBMS_OUTPUT.PUT_LINE('*************************');1676. END LOOP;1677. CLOSE A;1678. END;1679. Write a program to display all the information of emp table? 1680. DECLARE

Page 36: PLSQL Programmes

1681. CURSOR A IS1682. SELECT * FROM EMP;1683. B A%ROWTYPE;1684. BEGIN1685. OPEN A;1686. LOOP1687. FETCH A INTO B;1688. EXIT WHEN A%NOTFOUND;1689. DBMS_OUTPUT.PUT_LINE('EMP NO IS ' || B.EMPNO);1690. DBMS_OUTPUT.PUT_LINE('ENAME IS ' || B.ENAME);1691. DBMS_OUTPUT.PUT_LINE('SAL IS ' || B.SAL);1692. DBMS_OUTPUT.PUT_LINE('MGR NO IS ' || B.MGR);1693. DBMS_OUTPUT.PUT_LINE('COMM IS ' || B.COMM);1694. DBMS_OUTPUT.PUT_LINE('HIREDATE IS ' || B.HIREDATE);1695. DBMS_OUTPUT.PUT_LINE('DEPTNO IS ' || B.DEPTNO);1696. DBMS_OUTPUT.PUT_LINE('EMP JOB IS ' || B.JOB);1697. DBMS_OUTPUT.PUT_LINE('*************************');1698. END LOOP;1699. CLOSE A;1700. 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. DECLARE1703. LOCV DEPT.LOC%TYPE:='&LOC';1704. TOT NUMBER(10,2):=0;1705. ASAL NUMBER(10,2):=0;1706. NOEMPS NUMBER(5):=0;1707. CURSOR A IS1708. SELECT EMP.*,LOC FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO

AND LOC=LOCV;1709. B A%ROWTYPE;1710. BEGIN1711. OPEN A;1712. LOOP1713. 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

Page 37: PLSQL Programmes

1734. LOSALV SALGRADE.LOSAL%TYPE:=&LOSAL;1735. HISALV SALGRADE.HISAL%TYPE:=&HISAL;1736. EXP NUMBER(5,2);1737. CURSOR A IS1738. SELECT EMP.*,LOC,GRADE FROM EMP,DEPT,SALGRADE WHERE

EMP.DEPTNO=DEPT.DEPTNO1739. AND SAL BETWEEN LOSALV AND HISALV1740. AND SAL BETWEEN LOSAL AND HISAL;1741. B A%ROWTYPE;1742. BEGIN1743. OPEN A;1744. LOOP1745. 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. Write a program to print all the details of emps accepting the job? 1759. DECLARE1760. JOBV EMP.JOB%TYPE:='&JOB';1761. CURSOR A IS1762. SELECT * FROM EMP WHERE JOB=JOBV;1763. B A%ROWTYPE;1764. BEGIN1765. OPEN A;1766. LOOP1767. FETCH A INTO B;1768. EXIT WHEN A%NOTFOUND;1769. DBMS_OUTPUT.PUT_LINE('EMP NO IS ' || B.EMPNO);1770. DBMS_OUTPUT.PUT_LINE('ENAME IS ' || B.ENAME);1771. DBMS_OUTPUT.PUT_LINE('EMP JOB IS ' || B.JOB);1772. DBMS_OUTPUT.PUT_LINE('*************************');1773. END LOOP;1774. CLOSE A;1775. END;1776. Write a program to display the details of emps year wise? 1777. DECLARE1778. CURSOR YEARS IS1779. SELECT DISTINCT TO_CHAR(HIREDATE,'YYYY') YEARS1 FROM EMP ORDER

BY 1;1780. YEAR YEARS%ROWTYPE;1781. CURSOR A IS1782. SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'YYYY')=YEAR.YEARS1;1783. B A%ROWTYPE;1784. BEGIN1785. DBMS_OUTPUT.ENABLE(10000);1786. OPEN YEARS;1787. DBMS_OUTPUT.PUT_LINE('********************');

Page 38: PLSQL Programmes

1788. LOOP1789. FETCH YEARS INTO YEAR;1790. EXIT WHEN YEARS%NOTFOUND;1791. DBMS_OUTPUT.PUT_LINE('YEAR :' || YEAR.YEARS1);1792. DBMS_OUTPUT.PUT_LINE('**********************');1793. OPEN A;1794. LOOP1795. FETCH A INTO B;1796. EXIT WHEN A%NOTFOUND;1797. DBMS_OUTPUT.PUT_LINE('EMPNO IS ' || B.EMPNO);1798. DBMS_OUTPUT.PUT_LINE('ENAME IS ' || B.ENAME);1799. DBMS_OUTPUT.PUT_LINE('SALARY IS ' || B.SAL);1800. DBMS_OUTPUT.PUT_LINE('JOB IS ' || B.JOB);1801. DBMS_OUTPUT.PUT_LINE('DEPTNO IS ' || B.DEPTNO);1802. DBMS_OUTPUT.PUT_LINE('*************************');1803. END LOOP;1804. CLOSE A;1805. END LOOP;1806. CLOSE YEARS;1807. END;1808. Write a program to accept empno and print all the details along with loc and

grade? 1809. DECLARE1810. EMPNOV EMP.EMPNO%TYPE:=&EMPNO;1811. CURSOR A IS1812. SELECT EMP.*,GRADE,LOC FROM EMP,DEPT,SALGRADE1813. WHERE EMP.DEPTNO=DEPT.DEPTNO1814. AND SAL BETWEEN LOSAL AND HISAL AND EMPNO=EMPNOV;1815. B A%ROWTYPE;1816. BEGIN1817. OPEN A;1818. LOOP1819. FETCH A INTO B;1820. EXIT WHEN A%NOTFOUND;1821. DBMS_OUTPUT.PUT_LINE('EMPNO IS ' || B.EMPNO);1822. DBMS_OUTPUT.PUT_LINE('ENAME IS ' || B.ENAME);1823. DBMS_OUTPUT.PUT_LINE('SALARY IS ' || B.SAL);1824. DBMS_OUTPUT.PUT_LINE('JOB IS ' || B.JOB);1825. DBMS_OUTPUT.PUT_LINE('HIREDATE IS ' || B.HIREDATE);1826. DBMS_OUTPUT.PUT_LINE('LOC IS ' || B.LOC);1827. DBMS_OUTPUT.PUT_LINE('GRADE IS ' || B.GRADE);1828. DBMS_OUTPUT.PUT_LINE('*************************');1829. END LOOP;1830. CLOSE A;1831. END;1832. Write a procedure to create your own print statement? 1833. CREATE OR REPLACE PROCEDURE PRINT(V VARCHAR2)1834. IS1835. BEGIN1836. DBMS_OUTPUT.PUT_LINE(V);1837. 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. CREATE OR REPLACE PROCEDURE EMPPRO(DEPTNOV NUMBER)1840. IS1841. CURSOR A IS

Page 39: PLSQL Programmes

1842. SELECT * FROM EMP WHERE DEPTNO=DEPTNOV;1843. B A%ROWTYPE;1844. NOE NUMBER:=0;1845. TOT NUMBER:=0;1846. AVGS NUMBER(7,2):=0;1847. MAXS NUMBER(7,2):=0;1848. BEGIN1849. OPEN A;1850. LOOP1851. FETCH A INTO B;1852. EXIT WHEN A%NOTFOUND;1853. DBMS_OUTPUT.PUT_LINE('EMPNO :'||B.EMPNO);1854. DBMS_OUTPUT.PUT_LINE('ENAME :'||B.ENAME);1855. DBMS_OUTPUT.PUT_LINE('JOB :'||B.JOB);1856. DBMS_OUTPUT.PUT_LINE('SAL :'||B.SAL);1857. DBMS_OUTPUT.PUT_LINE('HIREDATE :'||B.HIREDATE);1858. DBMS_OUTPUT.PUT_LINE('COMM :'||B.COMM);1859. DBMS_OUTPUT.PUT_LINE('**********************');1860. TOT:=TOT+B.SAL;1861. NOE:=NOE+1;1862. IF B.SAL>MAXS THEN1863. MAXS:=B.SAL;1864. END IF;1865. END LOOP;1866. AVGS:=TOT/NOE;1867. DBMS_OUTPUT.PUT_LINE('NO OF EMPLOYEE :'||NOE);1868. DBMS_OUTPUT.PUT_LINE('TOTAL SALARY :'||TOT);1869. DBMS_OUTPUT.PUT_LINE('AVG SALARY :'||AVGS);1870. DBMS_OUTPUT.PUT_LINE('MAX SALARY :'||MAXS);1871. CLOSE A;1872. END;1873. Write a procedure to accept two different numbers and print all odd numbers

between the two given numbers? 1874. CREATE OR REPLACE PROCEDURE ODDNO(A NUMBER,B NUMBER)1875. IS1876. N NUMBER(4);1877. BEGIN1878. N:=A;1879. WHILE N<B1880. LOOP1881. IF MOD(N,2)!=0 THEN1882. DBMS_OUTPUT.PUT_LINE(N);1883. END IF;1884. N:=N+1;1885. END LOOP;1886. END;1887. Write a procedure to accept two different numbers and print even numbers

between the two given numbers? 1888. CREATE OR REPLACE PROCEDURE EVENNO(A NUMBER,B NUMBER)1889. IS1890. N NUMBER(4);1891. BEGIN1892. N:=A;1893. WHILE N<B1894. LOOP1895. IF MOD(N,2)=0 THEN

Page 40: PLSQL Programmes

1896. DBMS_OUTPUT.PUT_LINE(N);1897. END IF;1898. N:=N+1;1899. END LOOP;1900. END;1901. Write a procedure to accept deptno as input and print the details of emps along

with grade? 1902. CREATE OR REPLACE PROCEDURE EMP_DETAIL(DEPTNOV NUMBER)1903. IS1904. CURSOR A IS1905. SELECT EMP.*,GRADE FROM EMP,SALGRADE1906. WHERE SAL BETWEEN LOSAL AND HISAL1907. AND DEPTNO=DEPTNOV;1908. B A%ROWTYPE;1909. BEGIN1910. OPEN A;1911. LOOP1912. FETCH A INTO B;1913. EXIT WHEN A%NOTFOUND;1914. DBMS_OUTPUT.PUT_LINE('EMPNO IS '||B.EMPNO);1915. DBMS_OUTPUT.PUT_LINE('ENAME IS '||B.ENAME);1916. DBMS_OUTPUT.PUT_LINE('JOB IS '||B.JOB);1917. DBMS_OUTPUT.PUT_LINE('SAL IS '||B.SAL);1918. DBMS_OUTPUT.PUT_LINE('DEPTNO IS '||B.DEPTNO);1919. DBMS_OUTPUT.PUT_LINE('GRADE IS '||B.GRADE);1920. END LOOP;1921. CLOSE A;1922. END;1923. Write a procedure to accept a number as parameter and print its multiplication

table? 1924. CREATE OR REPLACE PROCEDURE MULT(A NUMBER)1925. IS1926. B NUMBER(2) DEFAULT 1;1927. C NUMBER(3);1928. BEGIN1929. WHILE B<=101930. LOOP1931. C:=A*B;1932. DBMS_OUTPUT.PUT_LINE(A||'*'||B||'='||C);1933. B:=B+1;1934. END LOOP;1935. 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. CREATE OR REPLACE PROCEDURE EVENODD(A NUMBER,B NUMBER)1938. IS1939. N NUMBER;1940. EV VARCHAR2(1000);1941. OD VARCHAR2(1000);1942. BEGIN1943.1944. N:=A;1945. WHILE N<B1946. LOOP1947. IF MOD(N,2)!=0 THEN

Page 41: PLSQL Programmes

1948. OD:=OD||' '||N;1949. ELSE1950. EV:=EV||' '||N;1951. END IF;1952. N:=N+1;1953. END LOOP;1954. DBMS_OUTPUT.PUT_LINE('THE ODD NOS ARE '||OD);1955. DBMS_OUTPUT.PUT_LINE('THE EVEN NOS ARE '||EV);1956. END;1957. Write a procedure to accept a string and check whether it is palindrome or not? 1958. CREATE OR REPLACE PROCEDURE STRPAL(STR VARCHAR2)1959. IS1960. STR1 VARCHAR2(10);1961. S VARCHAR2(10);1962. BEGIN1963. FOR I IN REVERSE 1..LENGTH(STR)1964. LOOP1965. S:=SUBSTR(STR,I,1);1966. STR1:=STR1||S;1967. END LOOP;1968. IF STR1=STR THEN1969. DBMS_OUTPUT.PUT_LINE('IT IS PALINDROME '||STR1);1970. ELSE1971. DBMS_OUTPUT.PUT_LINE('IT IS NOT PALINDROME '||STR1);1972. END IF;1973. END;1974. Write a procedure to accept a string and print it in reverse order? 1975. CREATE OR REPLACE PROCEDURE STRREV(STR VARCHAR2)1976. IS1977. STR1 VARCHAR2(10);1978. S VARCHAR2(10);1979. BEGIN1980. FOR I IN REVERSE 1..LENGTH(STR)1981. LOOP1982. S:=SUBSTR(STR,I,1);1983. STR1:=STR1||S;1984. END LOOP;1985. DBMS_OUTPUT.PUT_LINE('ORIGINAL '||STR);1986. DBMS_OUTPUT.PUT_LINE('REVERSE '||STR1);1987. END;1988. Write a procedure to accept the empno and print all the details of emp along with

exp, grade and loc? 1989. CREATE OR REPLACE PROCEDURE EMP_DET(EMPNOV NUMBER)1990. IS1991. EXP NUMBER(6,2);1992. E EMP%ROWTYPE;1993. GRADEV SALGRADE.GRADE%TYPE;1994. LOCV DEPT.LOC%TYPE;1995. BEGIN1996. 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);

Page 42: PLSQL Programmes

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. IS2011. CURSOR A IS2012. SELECT EMP.*,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO

AND DNAME=DNAMEV;2013. B A%ROWTYPE;2014. BEGIN2015. OPEN A;2016. LOOP2017. 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. Write a procedure to accept a string and print it in reverse case? 2028. CREATE OR REPLACE PROCEDURE S_R_CASE(STR VARCHAR2)2029. IS2030. S VARCHAR2(10);2031. V VARCHAR2(10);2032. N NUMBER(3);2033. BEGIN2034. FOR I IN 1..LENGTH(STR)2035. LOOP2036. S:=SUBSTR(STR,I,1);2037. N:=ASCII(S);2038. IF N BETWEEN 65 AND 90 THEN2039. V:=V||CHR(N+32);2040. ELSE2041. V:=V||CHR(N-32);2042. END IF;2043. END LOOP;2044. DBMS_OUTPUT.PUT_LINE('STRING IN REVERSE CASE IS '||V);2045. END;2046. Write a function to accept the empno and return exp with minimum 3 decimal? 2047. CREATE OR REPLACE FUNCTION E_DETAILS(EMPNOV NUMBER) RETURN

NUMBER2048. IS2049. HIREDATEV EMP.HIREDATE%TYPE;2050. EXP NUMBER(6,3);2051. BEGIN2052. SELECT HIREDATE INTO HIREDATEV FROM EMP WHERE EMPNO=EMPNOV;2053. EXP:=MONTHS_BETWEEN(SYSDATE,HIREDATEV)/12;2054. RETURN EXP;

Page 43: PLSQL Programmes

2055. END;2056. Write a function to accept a number and print the factorial of that number? 2057. CREATE OR REPLACE FUNCTION FAC(NUM NUMBER) RETURN NUMBER2058. IS2059. FACT NUMBER(4):=1;2060. BEGIN2061. FOR I IN REVERSE 1..NUM2062. LOOP2063. FACT:=FACT*I;2064. END LOOP;2065. RETURN FACT;2066. END;2067. Write a function to accept a grade and return the number of emps belongs to that

grade? 2068. CREATE OR REPLACE FUNCTION EMPGRADE(GRADEV NUMBER) RETURN

VARCHAR22069. IS2070. N NUMBER(4);2071. BEGIN2072. SELECT COUNT(*) INTO N FROM EMP,SALGRADE2073. WHERE SAL BETWEEN LOSAL AND HISAL AND GRADE=GRADEV;2074. RETURN 'NO OF EMPS ARE'||N;2075. END;2076. Write a program to accept the mgr number and return no of emp working at that

mgr? 2077. CREATE OR REPLACE FUNCTION N_EMPS(MGRV NUMBER) RETURN VARCHAR22078. IS2079. N NUMBER(4);2080. BEGIN2081. SELECT COUNT(*) INTO N FROM EMP WHERE MGR=MGRV;2082. RETURN 'THE NO OF EMPS ARE WORKING UNDER THIS MGR IS '||N;2083. END;2084. Write a function to accept a character string and print it in reverse case? 2085. CREATE OR REPLACE FUNCTION REVERSE(STR VARCHAR2) RETURN

VARCHAR22086. IS2087. STR1 VARCHAR2(20);2088. S VARCHAR2(20);2089. N NUMBER(4);2090. BEGIN2091. FOR I IN 1..LENGTH(STR)2092. LOOP2093. S:=SUBSTR(STR,I,1);2094. N:=ASCII(S);2095. IF N BETWEEN 65 AND 90 THEN2096. STR1:=STR1||CHR(N+32);2097. ELSE2098. STR1:=STR1||CHR(N-32);2099. END IF;2100. END LOOP;2101. RETURN 'THE REVERSE CASE IS '||STR1;2102. END;2103. Write a function to accept a string and check whether it is palindrome or not? 2104. CREATE OR REPLACE FUNCTION STRPAL1(STR VARCHAR2) RETURN

VARCHAR2

Page 44: PLSQL Programmes

2105. IS2106. STR1 VARCHAR2(10);2107. S VARCHAR2(10);2108. BEGIN2109. FOR I IN REVERSE 1..LENGTH(STR)2110. LOOP2111. S:=SUBSTR(STR,I,1);2112. STR1:=STR1||S;2113. END LOOP;2114. IF STR1=STR THEN2115. RETURN 'IT IS PALINDROME '||STR1;2116. ELSE2117. RETURN 'IT IS NOT PALINDROME '||STR1;2118. END IF;2119. 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 VARCHAR22122. IS2123. V VARCHAR2(30000);2124. CURSOR EMP_CUR IS2125. SELECT EMP.*,GRADE,DNAME FROM DEPT,EMP,SALGRADE2126. WHERE GRADE=GRADEV AND EMP.DEPTNO=DEPT.DEPTNO AND2127. 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. BEGIN2137. OPEN EMP_CUR;2138. LOOP2139. FETCH EMP_CUR INTO EMP_CUR_V;2140. EXIT WHEN EMP_CUR%NOTFOUND;2141. IF MAXSAL < EMP_CUR_V.SAL THEN2142. MAXSAL:=EMP_CUR_V.SAL;2143. END IF;2144. IF FLAG=0 THEN2145. MINSAL:=EMP_CUR_V.SAL;2146. FLAG:=1;2147. ELSIF FLAG=1 AND MINSAL > EMP_CUR_V.SAL THEN2148. 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 THEN2154. RAISE EX;2155. END IF;2156. AVGSAL:=SUMSAL/CNT;2157. V:='THE MAXIMUM SALARY OF GRADE' ||GRADEV||' IS'||MAXSAL||'

MINIMUM SALARY IS'||MINSAL||

Page 45: PLSQL Programmes

2158. 'AVERAGE SALARY IS'||AVGSAL||' TOTAL EMPS WORKING FOR THIS GRADE ARE'||CNT;

2159. CLOSE EMP_CUR;2160. RETURN V;2161. EXCEPTION2162. WHEN EX THEN2163. 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,even-

odd, function for factorial and function for palindrome? 2166. CREATE OR REPLACE PACKAGE DATA2167. IS2168. PROCEDURE MULT(A NUMBER);2169. PROCEDURE EVEN_ODD(N NUMBER);2170. FUNCTION FACT(N NUMBER) RETURN NUMBER;2171. PRAGMA RESTRICT_REFERENCES(FACT,WNDS);2172. FUNCTION PALEN(SRT VARCHAR2) RETURN VARCHAR2;2173. PRAGMA RESTRICT_REFERENCES(PALEN,WNDS);2174. END;2175. ⁄2176. CREATE OR REPLACE PACKAGE BODY DATA2177. IS2178. PROCEDURE MULT(A NUMBER)2179. IS2180. M NUMBER;2181. BEGIN2182. FOR I IN 1..102183. LOOP2184. M:=A*I;2185. DBMS_OUTPUT.PUT_LINE(A||'*'||I||'='||M);2186. END LOOP;2187. END;2188. PROCEDURE EVEN_ODD(N NUMBER)2189. IS2190. BEGIN2191. IF MOD(N,2)=0 THEN2192. DBMS_OUTPUT.PUT_LINE(N||' IS EVEN NUMBER');2193. ELSE2194. DBMS_OUTPUT.PUT_LINE(N||' IS NOT EVEN NUMBER');2195. END IF;2196. END;2197. FUNCTION FACT(N NUMBER) RETURN NUMBER2198. IS2199. F NUMBER:=1;2200. BEGIN2201. FOR I IN 1..N2202. LOOP2203. F:=F*I;2204. END LOOP;2205. RETURN F;2206. END;2207. FUNCTION PALEN(SRT VARCHAR2) RETURN VARCHAR22208. IS2209. S CHAR;2210. V VARCHAR2(50);

Page 46: PLSQL Programmes

2211. BEGIN2212. FOR I IN REVERSE 1..LENGTH(SRT)2213. LOOP2214. S:=SUBSTR(SRT,I,1);2215. V:=V||S;2216. END LOOP;2217. IF V=SRT THEN2218. RETURN 'PALINDROME';2219. ELSE2220. RETURN 'NOT PALINDROME';2221. END IF;2222. END;2223. END;2224. Write a database trigger halt the transaction on Sunday on EMP table 2225. CREATE OR REPLACE TRIGGER SUN_TRI2226. AFTER INSERT OR UPDATE OR DELETE ON EMP2227. DECLARE2228. DY VARCHAR2(200);2229. BEGIN2230. DY:=TO_CHAR(SYSDATE,'DY');2231. IF DY='SUN' THEN2232. 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. CREATE OR REPLACE TRIGGER SCOTT_TRI2237. BEFORE INSERT OR UPDATE OR DELETE ON EMP2238. BEGIN2239. IF USER = 'SCOTT' THEN2240. RAISE_APPLICATION_ERROR(-20006,'TRANSACTION NOT ALLOWED FOR

SCOTT');2241. END IF;2242. 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_TRI2245. BEFORE INSERT OR DELETE OR UPDATE ON EMP2246. DECLARE2247. T NUMBER;2248. BEGIN2249. T:=TO_CHAR(SYSDATE,'HH24');2250. IF T NOT BETWEEN 10 AND 18 THEN2251. 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 and2255. PRESIDENT2256. CREATE OR REPLACE TRIGGER SALES_PRI2257. BEFORE INSERT OR UPDATE OR DELETE ON EMP2258. FOR EACH ROW2259. WHEN (OLD.JOB IN ('SALESMAN','PRESIDENT') OR2260. NEW.JOB IN ('SALESMAN','PRESIDENT'))2261. BEGIN

Page 47: PLSQL Programmes

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. CREATE OR REPLACE TRIGGER TRANS_TYPE2266. AFTER INSERT OR UPDATE OR DELETE ON EMP2267. DECLARE2268. V VARCHAR2(50);2269. BEGIN2270. IF INSERTING THEN2271. V:='I';2272. ELSIF UPDATING THEN2273. V:='U';2274. ELSE2275. 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_TRI2281. BEFORE DELETE ON EMP2282. FOR EACH ROW2283. BEGIN2284. INSERT INTO EMPDEL2285. VALUES

(:OLD.EMPNO,:OLD.ENAME,:OLD.JOB,:OLD.MGR,:OLD.HIREDATE,:OLD.SAL,:OLD.COMM,

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. CREATE OR REPLACE TRIGGER HIREDATE_OVER2290. AFTER INSERT ON EMP2291. FOR EACH ROW2292. BEGIN2293. IF :NEW.HIREDATE > SYSDATE THEN2294. RAISE_APPLICATION_ERROR(-20009,'INVALID HIREDATE.....');2295. END IF;2296. 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_NO2299. BEFORE INSERT OR UPDATE OR DELETE ON EMP2300. FOR EACH ROW2301. DECLARE2302. DNO NUMBER:=0;2303. BEGIN2304. SELECT COUNT(*) INTO DNO FROM DEPT WHERE DEPTNO=:NEW.DEPTNO;2305. DBMS_OUTPUT.PUT_LINE(DNO);2306. IF DNO=0 THEN2307. RAISE_APPLICATION_ERROR(-20009,'DEPTNO NOT EXIST IN DEPT

TABLE....');2308. END IF;

Page 48: PLSQL Programmes

2309. END;2310. Write a database trigger add Rs 500 if the inserting salary is less than Rs 1000 2311. CREATE OR REPLACE TRIGGER SAL_ADD2312. BEFORE INSERT ON EMP2313. FOR EACH ROW2314. BEGIN2315. IF :NEW.SAL <= 1000 THEN2316. :NEW.SAL:=:NEW.SAL+500;2317. END IF;2318. 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_REC2321. AFTER INSERT ON EMP2322. DECLARE2323. R NUMBER;2324. BEGIN2325. SELECT COUNT(*) INTO R FROM EMP;2326. IF R>=100 THEN2327. RAISE_APPLICATION_ERROR(-20009,'100 RECORD ALLOWED IN EMP

TABLE.....');2328. END IF;2329. END;2330. Write a program to month and year and display the Calendar of that month. 2331. DECLARE2332. D NUMBER:=1;2333. M VARCHAR2(10):='&MONTH';2334. Y NUMBER:=&YEAR;2335. C CHAR(20);2336. V VARCHAR2(500);2337. N NUMBER;2338. BEGIN2339. N:=TO_CHAR(LAST_DAY(D||'-'||M||'-'||Y),'DD');2340. C:= TO_CHAR(TO_DATE(D||'-'||M||'-'||Y),'DY');2341. dbms_output.put_line('*********************************');2342. dbms_output.put_line('* '||M||'-'||Y||' *');2343. dbms_output.put_line('*SUN MON TUE WED THU FRI SAT *');2344. dbms_output.put_line('**********************************');2345. IF C='MON' THEN2346. V:=' ';2347. ELSIF C='TUE' THEN2348. V:=' ';2349. ELSIF C='WED' THEN2350. V:=' ';2351. ELSIF C='THU' THEN2352. V:=' ';2353. ELSIF C='FRI' THEN2354. V:=' ';2355. ELSIF C='SAT' THEN2356. V:=' ';2357. END IF;2358. FOR I IN 1..N2359. LOOP2360. V:=V||LPAD(I,4);2361. IF LENGTH(V)=28 THEN2362. dbms_output.put_line(LPAD(V,29,'*')||' *');

Page 49: PLSQL Programmes

2363. V:=NULL;2364. END IF;2365. END LOOP;2366. dbms_output.put_line('*'||RPAD(V,29)||'*');2367. END;


Recommended