1.FIND THE SUM AND AVERAGE OF ANY GIVEN NOS.
DECLARE
N1 NUMBER(2):=&N1;
N2 NUMBER(2):=&N2;
N3 NUMBER(2):=&N3;
S NUMBER(3);
A NUMBER(3);
BEGIN
S:=N1+N2+N3;
A:=S/3;
DBMS_OUTPUT.PUT_LINE('SUM='||S);
DBMS_OUTPUT.PUT_LINE('AVERAGE='||A);
END;
OUTPUT:
Enter value for n1: 10
old 2: N1 NUMBER(2):=&N1;
new 2: N1 NUMBER(2):=10;
Enter value for n2: 20
old 3: N2 NUMBER(2):=&N2;
new 3: N2 NUMBER(2):=20;
Enter value for n3: 30
old 4: N3 NUMBER(2):=&N3;
new 4: N3 NUMBER(2):=30;
SUM=60
AVERAGE=20
PL/SQL procedure successfully completed.
Algorithm:
- Start the program.
- Declare three variables, N1, N2, and N3, to store the given numbers.
- Initialize the values of N1, N2, and N3 using input from the user.
- Declare two variables, S and A, to store the sum and average of the given numbers.
- Calculate the sum of N1, N2, and N3 and store the result in variable S.
- Calculate the average of N1, N2, and N3 and store the result in variable A.
- Display the sum and average of the given numbers using the DBMS_OUTPUT.PUT_LINE function.
- End the program.
2.FIND THE FIBONACII SERIES
DECLARE
I NUMBER(3):=1;
J NUMBER(3):=0;
L NUMBER(2):=&L;
BEGIN
DBMS_OUTPUT.PUT_LINE('FIBONACII SERIES UP TO '||L||'TH LIMIT IS: ');
FOR K IN 1..L
LOOP
DBMS_OUTPUT.PUT_LINE(J);
J:=I+J;
I:=J-I;
END LOOP;
END;
OUTPUT:
Enter value for l: 10
old 4: L NUMBER(2):=&L;
new 4: L NUMBER(2):=10;
FIBONACII SERIES UP TO 10TH LIMIT IS:
0
1
1
2
3
5
8
13
21
34
PL/SQL procedure successfully completed.
- Start the program
- Declare three variables i, j, and l with data type NUMBER
- Initialize the value of i to 1 and j to 0 and set the value of l to the user's input.
- Using the DBMS_OUTPUT.PUT_LINE method, display the message "FIBONACII SERIES UP TO 'l'th LIMIT IS: " where l is the value of l entered by the user.
- Use the FOR loop with the range of 1 to the value of l
- Within the loop, use the DBMS_OUTPUT.PUT_LINE method to display the value of j
- Update the value of j by adding the value of i to j and then update the value of i by assigning j-i to i.
- Repeat steps 6-7 until the loop terminates.
- End the program.
3.UPDATE SALARY OF EMPLOYEE HAVING TABLE EMP USING “IF-THEN-ELSE” STATEMENT.
SQL> CREATE TABLE EMPLOYEE(ENO VARCHAR2(20),NAME VARCHAR2(20),SALARY NUMBER(7,2),HIRE_DATE DATE);
INSERT INTO EMPLOYEE VALUES('E001','JAYENT',12000,'21-JAN-09');
INSERT INTO EMPLOYEE VALUES('E002','GOURI',11000,'18-MAR-09');
INSERT INTO EMPLOYEE VALUES('E003','SRIKANT',7000,'12-JUL-09');
DECLARE
SAL NUMBER(8,2);
BONUS NUMBER(8,2);
HIREDATE DATE;
EMPID VARCHAR2(5);
BEGIN
SELECT SALARY, HIRE_DATE INTO SAL, HIREDATE FROM EMPLOYEE WHERE ENO = '&EMPID';
IF HIREDATE > TO_DATE('01-JAN-09') THEN
BONUS:= SAL+(SAL*0.02);
DBMS_OUTPUT.PUT_LINE('BONUS FOR EMPLOYEE: ' || EMPID || ' IS: ' || BONUS );
ELSE
BONUS:= SAL+(SAL*0.01);
DBMS_OUTPUT.PUT_LINE('BONUS FOR EMPLOYEE: ' || EMPID || ' IS: ' || BONUS );
END IF;
END;
OUTPUT:
Enter value for empid: E001
old 7: SELECT SALARY, HIRE_DATE INTO SAL, HIREDATE FROM EMPLOYEE WHERE ENO = '&EMPID';
new 7: SELECT SALARY, HIRE_DATE INTO SAL, HIREDATE FROM EMPLOYEE WHERE ENO = 'E001';
BONUS FOR EMPLOYEE: IS: 12240
PL/SQL procedure successfully completed.
Create a table "EMPLOYEE" with columns "ENO", "NAME", "SALARY" and "HIRE_DATE".
Insert data into the "EMPLOYEE" table.
Declare the variables: a. "SAL" to store the salary of an employee. b. "BONUS" to store the calculated bonus. c. "HIREDATE" to store the hire date of an employee. d. "EMPID" to store the employee id.
Input the employee id from the user.
Retrieve the salary and hire date of the employee using the SELECT statement.
Check the hire date of the employee using an IF statement. a. If the hire date is greater than 01-JAN-09, then calculate the bonus as 2% of the salary and display the message "BONUS FOR EMPLOYEE: EMPID IS: BONUS". b. If the hire date is not greater than 01-JAN-09, then calculate the bonus as 1% of the salary and display the message "BONUS FOR EMPLOYEE: EMPID IS: BONUS".
- END the program
4.CREATE A PL/SQL BLOCK TO ACCEPT THE STRING CONCATENATE IT AND INSERT INTO THE TABLE.
SQL>CREATE TABLE TEMP(NAME VARCHAR2(30));
DECLARE
S1 VARCHAR2(10);
S2 VARCHAR2(10);
BEGIN
S1:='&S1';
S2:='&S2';
DBMS_OUTPUT.PUT_LINE('CONCATED STRING: '||S1||S2);
INSERT INTO TEMP VALUES(S1||’ ‘||S2);
END;
OUTPUT:
Enter value for s1: JAYENT
old 5: S1:='&S1';
new 5: S1:='JAYENT';
Enter value for s2: KUMAR
old 6: S2:='&S2';
new 6: S2:='KUMAR';
CONCATED STRING: JAYENTKUMAR
SQL> SELECT * FROM TEMP;
NAME
-------------------------
GOURI SHANKER
JAYENT KUMAR
- Start the PL/SQL environment
- Create a table named TEMP with a single column NAME of VARCHAR2(30) data type.
- Declare two variables S1 and S2 of type VARCHAR2(10).
- Prompt the user to enter the values for S1 and S2.
- Assign the values entered by the user to the variables S1 and S2.
- Concatenate the values of S1 and S2 and store the result in a new variable.
- Display the concatenated string using the DBMS_OUTPUT.PUT_LINE function.
- Insert the concatenated string into the TEMP table in the NAME column.
- End the program.
5. ACCEPT NAME AND AGE OF THE STUDENT AND INSERT INTO TABLE STUD.AFTER VALIDATING AGE NOT LESS THAN 18 OTHERWISE RAISE EXCEPTION.
CREATE TABLE STUDENT(ROLL NUMBER,NAME VARCHAR2(20),AGE NUMBER(2));
INSERT INTO STUDENT VALUES(1,'GOURI',25);
INSERT INTO STUDENT VALUES(2,'JAYENT',22);
INSERT INTO STUDENT VALUES(3,'SRIKANT',23);
INSERT INTO STUDENT VALUES(4,'RAM',17);
CREATE TABLE STUD(NAME VARCHAR2(20),AGE NUMBER(2));
DECLARE
CURSOR CUR_STUDENT IS
SELECT NAME,AGE FROM STUDENT;
T_NAME STUDENT.NAME%TYPE;
T_AGE STUDENT.AGE%TYPE;
ERR EXCEPTION;
BEGIN
OPEN CUR_STUDENT;
LOOP
FETCH CUR_STUDENT INTO T_NAME,T_AGE;
IF T_AGE>18 THEN
INSERT INTO STUD VALUES(T_NAME,T_AGE);
ELSE
RAISE ERR;
END IF;
EXIT WHEN CUR_STUDENT%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(T_NAME||' '||T_AGE||' INSERTED');
END LOOP;
EXCEPTION
WHEN ERR THEN
DBMS_OUTPUT.PUT_LINE('ERROR:’||T_NAME||’ AGE LESS THAN 18 FOUND');
CLOSE CUR_STUDENT;
END;
OUTPUT:
GOURI 25 INSERTED
JAYENT 22 INSERTED
SRIKANT 23 INSERTED
ERROR:RAM AGE LESS THAN 18 FOUND
PL/SQL procedure successfully completed.
Create a table named "STUDENT" with columns ROLL NUMBER, NAME, and AGE.
Insert 4 records into the table STUDENT using the INSERT INTO statement.
Create another table named "STUD" with columns NAME and AGE.
Declare a cursor named "CUR_STUDENT" to select NAME and AGE from the table STUDENT.
Declare variables T_NAME, T_AGE, and ERR.
Open the cursor "CUR_STUDENT".
Start a loop to fetch each record from the cursor and store it in T_NAME and T_AGE.
Check if the value of T_AGE is greater than 18. If it is, then insert the T_NAME and T_AGE into the table STUD.
If the value of T_AGE is less than 18, then raise an error exception.
Exit the loop if all records from the cursor have been fetched.
If a record is successfully inserted into the table STUD, then print the message "T_NAME and T_AGE INSERTED".
If an error exception is raised, then print the message "ERROR: T_NAME AGE LESS THAN 18 FOUND".
Close the cursor "CUR_STUDENT".
End the program.
6. DISPLAY THE CUST_ID,MV_NO,AND CALL PROCEDURE THROUGH THE MAIN PROGRAM.
PROCEDURE CREATION:
CREATE OR REPLACE PROCEDURE DISP_PROC(CID IN varchar2,MNO IN NUMBER) IS
BEGIN
DBMS_OUTPUT.PUT_LINE(CID||' '||MNO);
END;
MAIN PROGRAM:
DECLARE
CURSOR CUR_SELECT IS
SELECT CUST_ID,MV_NO FROM INVOICE;
CID INVOICE.CUST_ID%TYPE;
MNO INVOICE.MV_NO%TYPE;
BEGIN
OPEN CUR_SELECT;
DBMS_OUTPUT.PUT_LINE('CUST_ID MV_NO');
DBMS_OUTPUT.PUT_LINE('==============');
LOOP
FETCH CUR_SELECT INTO CID,MNO;
EXIT WHEN CUR_SELECT%NOTFOUND;
DISP_PROC(CID,MNO);
END LOOP;
END;
OUTPUT:
CUST_ID MV_NO
==============
A01 4
A02 3
A03 1
A04 6
A04 7
A04 2
A03 5
A06 8
PL/SQL procedure successfully completed.
- Create a new PL/SQL block
- Declare a cursor "CUR_SELECT" with a SELECT statement to retrieve the "CUST_ID" and "MV_NO" from the "INVOICE" table.
- Declare two variables, "CID" and "MNO" with the data type of "CUST_ID" and "MV_NO" from the "INVOICE" table respectively.
- Open the cursor "CUR_SELECT".
- Print the header "CUST_ID MV_NO".
- Start a loop to retrieve data from the cursor and assign it to the variables "CID" and "MNO".
- Use the "EXIT WHEN" statement to exit the loop when the cursor has reached the end of the data.
- Call the procedure "DISP_PROC" passing the variables "CID" and "MNO" as parameters.
- End the loop.
- Close the cursor "CUR_SELECT".
- End the PL/SQL block.
7. Table Name : CUST (Customer Master Table)
Fields
Data Type
Constraints
CUST_ID
CHAR(3)
NOT_NULL
L_NAME
CHAR(15)
F_NAME
CHAR(15)
AREA
CHAR(2)
PHONE_NO
NUMBER(8)
SQL>CREATE TABLE CUST(CUST_ID VARCHAR2(3)NOT NULL,L_NAME VARCHAR2(15),F_NAME VARCHAR2(15),AREA VARCHAR2(2),PHONE_NO NUMBER(8));
Table created.
Table Name : CUST (Customer Master Table)
CUST_ID
L_NAME
F_NAME
AREA
PHONE_NO
A01
BHIMA
ISHWAR
SA
6125467
A02
SAWAL
VIJAY
MU
5560379
A03
JAISWAL
PRAMOD
DA
4563831
A04
NEWARE
BASU
BA
6125401
A05
SREEDHARAN
RAVI
VA
A06
RAJESH
GH
5125274
SQL>INSERT INTO CUST VALUES('A01','BHIMA','ISHWAR','SA',6125467);
SQL>INSERT INTO CUST VALUES('A02','SAWAI','VIJAY','MU',5560379);
SQL>INSERT INTO CUST VALUES('A03','JAISWAL','PRAMOD','DA',4563891);
SQL>INSERT INTO CUST VALUES('A04','NEWARE','BASU','BA',6125401);
SQL>INSERT INTO CUST VALUES('A05','SREEDHARAN','RAVI','VA',' ');
SQL>INSERT INTO CUST VALUES('A06',' ','RAJESH','GH',5122274);
8.FIND THE SUM OF SIN SERIES (X-X3/3!+X5/5!-X7/7!+Xn/n!)
DECLARE
I NUMBER(2):=1;
X NUMBER(3):=&X;
N NUMBER(2):=&N;
T NUMBER(15,2):=X;
S NUMBER(20,2):=0;
BEGIN
WHILE I<=N
LOOP
S:=S+T;
T:=(-T*X*X)/((I+1)*(I+2));
I:=I+2;
DBMS_OUTPUT.PUT_LINE(S);
END LOOP;
END;
OUTPUT:
Enter value for x: 30
old 3: X NUMBER(3):=&X;
new 3: X NUMBER(3):=30;
Enter value for n: 10
old 4: N NUMBER(2):=&N;
new 4: N NUMBER(2):=10;
30
-4470
198030
-4141255.71
50099815.67
PL/SQL procedure successfully completed.
- Declare four variables: I, X, N, T, and S.
- Assign values to the variables.
- Start a while loop that will run while I is less than or equal to N.
- Within the loop, add the value of T to S.
- Calculate the new value of T by using the formula (-T * X * X) / ((I + 1) * (I + 2)).
- Increment the value of I by 2.
- Print the value of S using the DBMS_OUTPUT.PUT_LINE function.
- End the while loop.
- End the program.
9. TO FIND THE DAY OF THE WEEK USING THE FUNCTION AND CALL THE FUNCTION THROUGH THE MAIN PROGRAM.
FUNCTION CREATION:
CREATE OR REPLACE FUNCTION FUNC_DAY_OF_WEEK(D IN DATE,C IN VARCHAR2) RETURN DATE IS
DT DATE;
BEGIN
SELECT NEXT_DAY(D,C) INTO DT FROM DUAL;
RETURN DT;
END;
MAIN PROGRAM:
DECLARE
DT DATE;
BEGIN
DT:=FUNC_DAY_OF_WEEK(SYSDATE,'MONDAY');
DBMS_OUTPUT.PUT_LINE(‘DAY OF WEEK: ’||DT);
DBMS_OUTPUT.PUT_LINE('DAY IS: '||TO_CHAR(DT,'DAY'));
END;
OUTPUT:
DAY OF WEEK: 12-OCT-09
DAY IS: MONDAY
PL/SQL procedure successfully completed.
Algorithm for the above program:
- Declare a variable DT of type DATE
- Assign the value returned by the function FUNC_DAY_OF_WEEK to the variable DT
- Output the value of DT using DBMS_OUTPUT.PUT_LINE
- Output the day of the week in textual form using DBMS_OUTPUT.PUT_LINE and TO_CHAR function
Algorithm for the function FUNC_DAY_OF_WEEK:
- Declare a variable DT of type DATE
- Get the next day of the week as specified by the input parameter 'C' and assign it to the variable DT
- Return the value of DT to the calling program
- End the function
10. FIND THE G.C.D. OF TWO NOS.
FUNCTION CREATION:
CREATE OR REPLACE FUNCTION GCD(M NUMBER,N NUMBER) RETURN NUMBER IS
A NUMBER;
B NUMBER;
T NUMBER;
BEGIN
A:=M;
B:=N;
T:=M;
WHILE A>0
LOOP
T:=A;
A:=A MOD B;
B:=T;
END LOOP;
RETURN B;
END;
MAIN PROGRAM:
DECLARE
M NUMBER;
N NUMBER;
R NUMBER;
BEGIN
M:=&M;
N:=&N;
R:=GCD(M,N);
DBMS_OUTPUT.PUT_LINE('GCD IS:'||R);
END;
OUTPUT:
Enter value for m: 15
old 6: M:=&M;
new 6: M:=15;
Enter value for n: 6
old 7: N:=&N;
new 7: N:=6;
GCD IS:3
Algorithm for the given program:
- Declare 3 variables M, N, and R.
- Take the inputs for M and N from the user.
- Call the function GCD and pass the values of M and N as arguments.
- Store the returned value in R.
- Display the value of R as the GCD of M and N.
Function GCD Algorithm:
- Declare 3 variables A, B, and T.
- Assign the value of M to A and N to B.
- Assign the value of M to T.
- Start a while loop, repeat until A is greater than 0.
- Within the while loop, swap the values of A and T.
- Calculate A = A MOD B.
- Swap the values of B and T.
- End the while loop.
- Return the value of B, which is the GCD of M and N.