Sie sind auf Seite 1von 3

DBMS-II (PL/SQL) Assignment

PL/SQL Block:

1. Write a program that accepts 2 numbers from the user and interchange
the values of those 2 numbers.

SET SERVEROUTPUT ON
SET FEEDBACK OFF
SET VERIFY OFF

ACCEPT NO1 PROMPT "Enter first number: - "


ACCEPT NO2 PROMPT "Enter second number: - "
DECLARE
A NUMBER (14,2);
B NUMBER (14,2);
C NUMBER (14,2);
BEGIN
A: = &NO1;
B: = &NO2;
DBMS_OUTPUT.PUT_LINE ('The value of 1st no. :- ' || A);
DBMS_OUTPUT.PUT_LINE ('The value of 2nd no. :- ' || B);

C: = A;
A: = B;
B: = C;
DBMS_OUTPUT.PUT_LINE ('The value of 1st no. :- ' || A);
DBMS_OUTPUT.PUT_LINE ('The value of 2nd no. :- ' || B);
END;
/
SET SERVEROUTPUT OFF
SET FEEDBACK ON
SET VERIFY ON

Developed By: Dr. Jaypalsinh A. Gohil Page 1 of 3


DBMS-II (PL/SQL) Assignment

Cursor:
2. Write a program that uses a cursor attribute %ROWCOUNT to display
the name, department and salary of first 10 employees getting the
highest salary. (Use Explicit Cursor)

SET SERVEROUTPUT ON
SET FEEDBACK OFF
SET VERIFY OFF

DECLARE
CURSOR CUR_EMP2 IS SELECT EMP_NO, DEPT_NO, SAL FROM EMP, DEPT WHERE
DEPT.DEPT_NO = EMP.DEPTNO ORDER BY SAL DESC;
V_NAME EMP.EMP_NAME%TYPE;
V_DEPTNO EMP.DEPT_NO%TYPE;
V_SAL EMP.SAL%TYPE;
BEGIN
OPEN CUR_EMP2;

DBMS_OUTPUT.PUT_LINE (‘NAME DEPARTMENT SALARY’);


DBMS_OUTPUT.PUT_LINE (‘--------- --------------------- ------------);

LOOP
FETCH CUR_EMP2 INTO V_NAME, V_DEPTNO, V_SAL;
EXIT WHEN CUR_EMP2%ROWCOUNT = 10 OR CUR_EMP2%NOTFOUND;
DBMS_OUTPUT.PUT_LINE (V_NAME||’ ‘||V_DEPTNO||’ ‘||V_SAL);
END LOOP;
CLOSE CUR_EMP2;

END;
/

3.0 Write a program using a cursor FOR loop to display name and the basic
salary of 3 highest paid employees. (Use Cursor For Loop)
SET SERVEROUTPUT ON
SET FEEDBACK OFF
SET VERIFY OFF

DECLARE
CURSOR CUR_EMP5 IS SELECT * FROM EMP ORDER BY SAL DESC;
M_EMPREC EMP%ROWTYPE;
I NUMBER (3): = 1;

BEGIN
FOR M_EMPRECH IN CUR_EMP5 LOOP
DBMS_OUTPUT.PUT_LINE (RPAD (M_EMPREC.EMP_NAME,15) || M_EMPREC.SAL);
I: = I+1;
EXIT WHEN I > 3;
END LOOP;
END;
/

Developed By: Dr. Jaypalsinh A. Gohil Page 2 of 3


DBMS-II (PL/SQL) Assignment

Procedures

4. Write a procedure that search’s whether the given employee number is


present or not in the table. (P_SEARCH_EMP.SQL)

SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE SEARCH_EMP
(VEMPNO IN EMP.ENO%TYPE, VNAME OUT VARCHAR2)
IS
BEGIN
SELECT ENAME INTO VNAME FROM EMP WHERE ENO = VEMPNO;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE (TO_CHAR(VEMPNO) || 'NOT FOUND');
END;
/
SQL>@P_SEARCH_EMP.SQL;
SQL>VARIABLE EMP_NAME VARCHAR2;
SQL>EXECUTE SEARCH_EMP(101,EMP_NAME);
SQL>PRINT EMP_NAME;

5. Write a PL/SQL block to call the SEARCH_EMP procedure.

SET SERVEROUTPUT ON
DECLARE
M_NAME EMP.ENAME%TYPE;
BEGIN
SEARCH_EMP (1000, M_NAME);
DBMS_OUTPUT.PUT_LINE (‘ THE EMPLOYEE NO 1000’ || M_NAME);

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE (TO_CHAR (VEMPNO) || 'NOT FOUND');
END;
/

Developed By: Dr. Jaypalsinh A. Gohil Page 3 of 3

Das könnte Ihnen auch gefallen