0% found this document useful (0 votes)
5 views

Database Lab Sol 2022

The document contains examples of SQL commands for creating, altering and manipulating tables. It covers topics like creating and dropping tables, adding, modifying and deleting columns, inserting and selecting data, joining tables, aggregation and more. Multiple exercises are provided with increasing complexity to practice different SQL statements.

Uploaded by

mustafaalj2002
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Database Lab Sol 2022

The document contains examples of SQL commands for creating, altering and manipulating tables. It covers topics like creating and dropping tables, adding, modifying and deleting columns, inserting and selecting data, joining tables, aggregation and more. Multiple exercises are provided with increasing complexity to practice different SQL statements.

Uploaded by

mustafaalj2002
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

Database Lab Worksheet 1

Exercise 1:

1. CREATE TABLE EMPLOYEE (

EMPNO NUMBER (4),ENAME VARCHAR2(10),

JOBB VARCHAR2(10),SALARY NUMBER (8,2));

2. CREATE EMP1 AS(SELECT * FROM EMPLOYEE);


3. ALTER TABLE EMPLOYEE MODIFY EMPNO NUMBER(6);
4. ALTER TABLE EMPLOYEE ADD QUALIFICATION VARCHAR2(15);
5. ALTER TABLE EMPLOYEE DROP COLUMN JOBB;
6. DROP TABLE EMPLOYEE;

Exercise 2:

1. CREATE TABLE CUSTOMER (

CUSTOMER_ID NUMBER (10),

CUSTOMER_NAME VARCHAR2(50),

ADDRESS VARCHAR2(50),

CITY VARCHAR2(50));

2. ALTER TABLE CUSTOMER ADD (PHONE VARCHAR2(12),EMAIL


VARCHAR2(20));
3. ALTER TABLE CUSTOMER RENAME COLUMN CUSTOMER_ID TO ID;
4. ALTER TABLE CUSTOMER RENAME TO CUSTOM;
5. ALTER TABLE CUSTOMER DROP COLUMN CITY;
6. ALTER TABLE CUSTOMER MODIFY PHONE NUMBER(10);
Exercise 3:

1. CREATE TABLE COURSES (ID_NUM NUMBER (8),

ST_NAME VARCHAR2 (15),

COURSE_NAME VARCHAR2(15),

DEPARTMEN VARCHAR(3),

BDATE DATE,

MARK NUMBER(3));

2. INSERT INTO COURSES VALUES (11,'ALI','DB','CSA',TO_DATE('14-2-


2013','DD-MM-YYYY'),70);

INSERT INTO COURSES VALUES (22,'AHMAD','DB','CIS',TO_DATE('15-3-


2012','DD-MM-YYYY'),40);

INSERT INTO COURSES VALUES (33,'MUNA','VP','SWE',TO_DATE('11-4


-2012','DD-MM-YYYY'),90);

3. ALTER TABLE COURSES ADD (GPA NUMBER(5,2),FLAG NUMBER (1));


4. CREATE TABLE NEW_COURSES AS (SELECT* FROM COURSES);
5. ALTER TABLE COURSES DROP COLUMN GPA;
6. CREATE TABLE NEW_COURSES AS (SELECT * FROM COURSES);
7. DROP TABLE NEW_COURSES;
8. SELECT* FROM COURSES;
9. SELECT ST_NAME, MARK FROM COURSES;
10. UPDATE COURSES SET FLAG=1;
Database Lab Worksheet 2

Exercise 1:

1. SELECT employee_id,first_name,hire_date as
"EMP#,EMPLOYEE,STARTDATE" FROM HR.employees;

2. SELECT FIRST_NAME ||' , '||JOB_ID AS "EMPLOYEE AND TITLE" FROM


HR.employees;

3. SELECT FIRST_NAME,LAST_NAME,SALARY*12+100 "TOTAL INCOME"


FROM HR.employees;

4. SELECT DISTINCT JOB_ID FROM HR.employees;

Exercise 2:

1. SELECT FIRST_NAME,LAST_NAME,HIRE_DATE FROM HR.employees


WHERE HIRE_DATE<'07-MAR-2006';

2. SELECT EMPLOYEE_ID,FIRST_NAME,HIRE_DATE FROM HR.employees


WHERE HIRE_DATE BETWEEN '01-JAN-2002' AND '29-DEC-2002';

3. SELECT FIRST_NAME,LAST_NAME,SALARY FROM HR.employees WHERE


SALARY BETWEEN 2500 AND 3500;

4. SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY,MANAGER_ID
FROM HR.employees WHERE manager_id IN(100,101,201);
5. SELECT employee_id,first_name,last_name,department_id from HR.employees
where last_name in('Hartstein','Vargas','Hunold');

6. SELECT LAST_NAME,JOB_ID FROM HR.employees WHERE JOB_ID NOT IN


('IT_PROG','ST_CLERK','SA_REP');

7. SELECT employee_id,FIRST_NAME,LAST_NAME FROM HR.employees


WHERE UPPER (last_name) LIKE'_O%';

8. SELECT employee_id,FIRST_NAME,LAST_NAME FROM HR.employees


WHERE last_name LIKE'O%';

Exercise 3:

1. SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME FROM HR.employees


WHERE JOB_ID LIKE'%MAN%' AND SALARY>=1000;

2. SELECT EMPLOYEE_ID,FIRST_NAME,JOB_ID FROM HR.employees WHERE


JOB_ID LIKE'%MAN%' OR SALARY>=1000;

3. SELECT EMPLOYEE_ID,FIRST_NAME,JOB_ID FROM HR.employees WHERE


(JOB_ID='AD_PRES' OR job_id='SA_REP')AND salary>=15000;
Exercise 4:

1. SELECT EMPLOYEE_ID,FIRST_NAME,DEPARTMENT_ID FROM


HR.employees ORDER BY DEPARTMENT_ID DESC;

2. SELECT EMPLOYEE_ID,FIRST_NAME,DEPARTMENT_ID FROM


HR.employees ORDER BY FIRST_NAME;

Exercise 5:

1. SELECT * FROM HR.EMPLOYEES WHERE (SALARY BETWEEN 7000 AND


12000) AND DEPARTMENT_ID=50;

2. SELECT EMPLOYEE_ID,FIRST_NAME,JOB_ID,DEPARTMENT_ID FROM


HR.EMPLOYEES WHERE DEPARTMENT_ID NOT IN(30,50,80) ORDER BY
DEPARTMENT_ID;

3. SELECT FIRST_NAME,LAST_NAME,DEPARTMENT_ID FROM HR.employees


WHERE UPPER (FIRST_NAME) LIKE '__S%';

4. SELECT FIRST_NAME||' '||LAST_NAME AS "FULL


NAME",HIRE_DATE,COMMISSION_PCT,EMAIL||' - '||PHONE_NUMBER AS
"CONTACT" FROM HR.employees
WHERE SALARY>=1100 OR PHONE_NUMBER LIKE '______3%'
ORDER BY FIRST_NAME DESC;

5. SELECT FIRST_NAME||' '||LAST_NAME AS "FULL


NAME",JOB_ID,HIRE_DATE FROM HR.employees WHERE HIRE_DATE
BETWEEN TO_DATE('MARCH 5,2004','MONTH DD,YYYY') AND
TO_DATE('JULY 5,2005','MONTH DD,YYYY');

6. SELECT FIRST_NAME||' '||LAST_NAME AS "FULL NAME",SALARY FROM


HR.employees WHERE SALARY NOT BETWEEN 7000 AND 15000 ORDER BY
FIRST_NAME;

7. SELECT * FROM HR.employees WHERE UPPER(FIRST_NAME) LIKE'%D%'


AND UPPER(FIRST_NAME) LIKE'%S%' OR UPPER(FIRST_NAME) LIKE'%N%'
ORDER BY SALARY DESC;
Database Lab Worksheet 3

Exercise 1:

1. SELECT LAST_NAME, JOB_ID,COMMISSION_PCT FROM HR.employees


WHERE COMMISSION_PCT IS NULL;

2. SELECT LAST_NAME,NVL(COMMISSION_PCT,0) FROM HR.employees


WHERE COMMISSION_PCT IS NULL;

3. SELECT
NVL2(COMMISSION_PCT,SALARY+COMMISSION_PCT,SALARY)
"INCOME" FROM HR.employees;

4. SELECT EMPLOYEE_ID,SALARY,
COMMISSION_PCT,SALARY*12+SALARY*NVL(COMMISSION_PCT,0)
"NEW SALARY" FROM HR.employees;

Exercise 2:

1. SELECT EMPLOYEE_ID ,LAST_NAME ,DEPARTMENT_ID FROM


HR.employees WHERE LAST_NAME='higgins';

2. SELECT EMPLOYEE_ID , LAST_NAME ,DEPARTMENT_ID FROM


HR.employees WHERE LOWER(LAST_NAME)='higgins';

3. SELECT EMPLOYEE_ID , LAST_NAME ,DEPARTMENT_ID FROM


HR.employees WHERE UPPER(LAST_NAME)='HIGGINS';

4. SELECT EMPLOYEE_ID , LAST_NAME ,DEPARTMENT_ID FROM


HR.employees WHERE LAST_NAME=INITCAP('higgins');
5. SELECT EMPLOYEE_ID ,
CONCAT(FIRST_NAME,LAST_NAME),JOB_ID,LENGTH(LAST_NAME) FROM
HR.employees WHERE SUBSTR(JOB_ID,4)='REP';

6. SELECT UPPER(CONCAT(SUBSTR(LAST_NAME,1,8),'_Us')) FROM


HR.employees WHERE DEPARTMENT_ID=60;

7. SELECT
FIRST_NAME,LAST_NAME,LENGTH(First_Name),LENGTH(LAST_NAME),
NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME)) FROM
HR.employees;

Exercise 3:

1. SELECT ROUND(45.239,2) FROM DUAL;


2. SELECT ROUND(1045.239,-3) FROM DUAL;
3. SELECT ROUND(45.239) FROM DUAL;
4. SELECT TRUNC(45.239,2) FROM Dual;
5. SELECT TRUNC(45.239) FROM DUAL;
6. SELECT TRUNC(45.239,-1) FROM DUAL;

Exercise 4:

1. SELECT TO_CHAR(HIRE_DATE,'DD "OF" MONYYYY HH:MI:SS AM') FROM


HR.employees;
2. SELECT To_Char(Hire_Date,'YYYY') FROM HR.employees;
3. SELECT HIRE_DATE FROM HR.EMPLOYEES WHERE
TO_CHAR(HIRE_DATE,'yyyy')< 2003;
4. INSERT INTO HR.employees
(EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,HIRE_DATE,DEPARTMEN
T_ID,JOB_ID)
VALUES(2020,'Ali','Ali','[email protected]',TO_DATE('03.12/2012','DD.MM/YYYY'),5
0,'ST_CLERK');
5. SELECT LENGTH(FIRST_NAME),TO_CHAR(HIRE_DATE,'MONTH') FROM
HR.employees WHERE LENGTH(FIRST_NAME)>5;
Database Lab Worksheet 4

Exercise 1:

1. SELECT MAX(SALARY) "MAXIMUM",MIN(SALARY)


"MINIMUM",SUM(SALARY) "SUM",AVG(SALARY) "AVG" FROM HR.employees;

2. SELECT COUNT(*) FROM HR.employees WHERE JOB_ID LIKE '%REP%';


3. SELECT COUNT(*) FROM HR.employees WHERE DEPARTMENT_ID=80;
4. SELECT COUNT(DISTINCT(DEPARTMENT_ID)) FROM HR.employees;
5. SELECT COUNT(*) FROM HR.employees WHERE COMMISSION_PCT IS
NULL AND TO_CHAR(HIRE_DATE,'YYYY')=2004;

Exercise 2:

1. SELECT JOB_ID,COUNT(DEPARTMENT_ID) FROM HR.employees GROUP


BY JOB_ID;
2. SELECT JOB_ID,COUNT(*) FROM HR.employees GROUP BY JOB_ID
HAVING COUNT(*)>5;
OR
SELECT JOB_ID,COUNT(EMPLOYEE_ID) FROM HR.employees GROUP BY
JOB_ID HAVING COUNT(EMPLOYEE_ID)>5;

3. SELECT JOB_ID,SUM(SALARY) FROM HR.employees WHERE JOB_ID


LIKE'%REP%' GROUP BY JOB_ID HAVING SUM(SALARY)>1300 ORDER BY
SUM(SALARY) DESC;
Exercise 3:

1. SELECT FIRST_NAME||' '||LAST_NAME AS "NAME" FROM HR.employees


WHERE SALARY>(SELECT SALARY FROM HR.employees WHERE
EMPLOYEE_ID=163);

2. SELECT LAST_NAME,JOB_ID,SALARY FROM HR.employees WHERE


SALARY=(SELECT MIN(SALARY) FROM HR.employees);

3. SELECT DEPARTMENT_ID,MIN(SALARY) FROM HR.employees GROUP BY


DEPARTMENT_ID HAVING MIN(SALARY)>(SELECT MIN(SALARY) FROM
HR.employees WHERE DEPARTMENT_ID=50);

4. SELECT * FROM HR.employees WHERE EMPLOYEE_ID=(SELECT


MAX(EMPLOYEE_ID) FROM HR.employees);

5. SELECT EMPLOYEE_ID,FIRST_NAME||' '||LAST_NAME AS "NAME" FROM


HR.employees WHERE SALARY>(SELECT AVG(SALARY) FROM
HR.employees);
Database Lab Worksheet 5

Exercise 1:

1. SELECT EMPLOYEE_ID,FIRST_NAME FROM HR.employees WHERE


EMPLOYEE_ID BETWEEN 140 AND 150
UNION
SELECT DEPARTMENT_ID,DEPARTMENT_NAME FROM HR.departments;

2. SELECT EMPLOYEE_ID,FIRST_NAME FROM HR.employees WHERE


DEPARTMENT_ID=10
UNION
SELECT DEPARTMENT_ID,DEPARTMENT_NAME FROM HR.departments
WHERE DEPARTMENT_ID>50;

3. SELECT MAX(SALARY)"MAX AND MIN" FROM HR.employees


UNION
SELECT MIN(SALARY) FROM HR.employees;

Exercise 2:

1. SELECT
EMPLOYEE_ID,FIRST_NAME,DEPARTMENTS.DEPARTMENT_ID,DEPARTM
ENT_NAME FROM HR.employees,HR.departments WHERE
DEPARTMENTS.DEPARTMENT_ID=EMPLOYEES.DEPARTMENT_ID;

2. SELECT DEPARTMENT_NAME,FIRST_NAME||' '||LAST_NAME AS"NAME"


FROM HR.employees,HR.departments WHERE
DEPARTMENTS.DEPARTMENT_ID=EMPLOYEES.DEPARTMENT_ID;
3. SELECT
DEPARTMENT_NAME,COUNT(EMPLOYEE_ID),MAX(SALARY),MIN(SALARY)
FROM HR.employees,HR.departments WHERE
DEPARTMENTS.DEPARTMENT_ID=EMPLOYEES.DEPARTMENT_ID GROUP
BY DEPARTMENT_NAME HAVING COUNT(EMPLOYEE_ID)>4 ;
OR
SELECT DEPARTMENT_NAME,COUNT(*),MAX(SALARY),MIN(SALARY)
FROM HR.employees,HR.departments WHERE
DEPARTMENTS.DEPARTMENT_ID=EMPLOYEES.DEPARTMENT_ID GROUP
BY DEPARTMENT_NAME HAVING COUNT(*)>4 ;

4. SELECT DEPARTMENT_NAME,COUNT(EMPLOYEE_ID)FROM
HR.employees,HR.departments WHERE
DEPARTMENTS.DEPARTMENT_ID=EMPLOYEES.DEPARTMENT_ID GROUP
BY DEPARTMENT_NAME
UNION
SELECT 'NAME',COUNT(DEPARTMENTS.DEPARTMENT_ID) FROM
HR.departments;

5. SELECT JOB_TITLE,FIRST_NAME||' '||LAST_NAME AS"FULL NAME",


MAX_SALARY-SALARY FROM HR.employees,HR.jobs WHERE
employees.JOB_ID=jobs.JOB_ID;

Exercise 3:

A. CREATE TABLE STUDENTS(STUDENT_ID NUMBER(3) PRIMARY KEY,


STUDENT_NAME VARCHAR2(50),DEPARTMENT_ID VARCHAR2(15)
REFERENCES DEP(DEPARTMENT_ID), DATEOFBIRTH DATE);
CREATE TABLE DEP(DEPARTMENT_ID VARCHAR2(15) PRIMARY
KEY,DEPARTMENT_NAME VARCHAR2 (20));
1) ALTER TABLE STUDENTS MODIFY STUDENT_NAME VARCHAR2(50)
NOT NULL;
2) ALTER TABLE DEP MODIFY DEPARTMENT_NAME
CHECK(DEPARTMENT_NAME='CSA'OR DEPARTMENT_NAME='CIS'
OR DEPARTMENT_NAME='SE');
3) ALTER TABLE STUDENTS MODIFY DATEOFBIRTH DATE DEFAULT
'1/JAN/1990';
4) ALTER TABLE students DROP CONSTRAINT DEPARTMENT_ID;
OR
ALTER TABLE students DROP FOREIGN KEY;

5) ALTER TABLE STUDENTS MODIFY DATEOFBIRTH DATE DEFAULT


NULL;
6) drop table students;
drop table DEP;

B. CREATE TABLE EMP(ID NUMBER(2) PRIMARY KEY,


FNAME VARCHAR2(15),
LNAME VARCHAR2(15) DEFAULT 'NO FNAME',
DEPT_ID NUMBER(2));

CREATE TABLE DEPT(ID NUMBER(2) PRIMARY KEY,


NMAE VARCHAR2(15) NOT NULL);

1) ALTER TABLE EMP MODIFY DEPT_ID NUMBER(2) REFERENCES


DEPT(ID);
2) ALTER TABLE EMP DROP PRIMARY KEY;
3) DROP TABLE EMP;
DROP TABLE DEPT;
Database Lab Worksheet 6

Exercise 1:

1. DECLARE

STD_ID INTEGER(7);
STD_NAME VARCHAR2(20);
STD_MAJOR VARCHAR2(4);
BEGIN

STD_ID:=2087722;
STD_NAME:='MOHAMMAD ALI';
STD_MAJOR:='CIS';

DBMS_OUTPUT.PUT_LINE('STUDENT ID: '||STD_ID);


DBMS_OUTPUT.PUT_LINE('STUDENT NAME: '||STD_NAME);
DBMS_OUTPUT.PUT_LINE('STUDENT MAJOR: '||STD_MAJOR);
END;
/

2. DECLARE

STD_ID INTEGER(7);
STD_NAME VARCHAR2(20);
STD_MAJOR VARCHAR2(4);

BEGIN

STD_ID:=&STD_ID;
STD_NAME:=&STD_NAME;
STD_MAJOR:=&STD_MAJOR;

DBMS_OUTPUT.PUT_LINE('STUDENT ID: '||STD_ID);


DBMS_OUTPUT.PUT_LINE('STUDENT NAME: '||STD_NAME);
DBMS_OUTPUT.PUT_LINE('STUDENT MAJOR: '||STD_MAJOR);
END;
/
3. DECLARE

A INTEGER;
B INTEGER;
C INTEGER;
D INTEGER;
M INTEGER;
F FLOAT;

BEGIN
A:=&A;
B:=&B;
C:=A+B;
D:=A*B;
F:=A/B;
M:=A MOD B;

DBMS_OUTPUT.PUT_LINE('A + B = '||C);
DBMS_OUTPUT.PUT_LINE('A * B = '||D);
DBMS_OUTPUT.PUT_LINE('A / B = '||F);
DBMS_OUTPUT.PUT_LINE('A MOD B = '||M);
END;
/

Exercise 2:

1. DECLARE
X INTEGER;
Z INTEGER;
Y INTEGER;

BEGIN
X:=&X;
Z:=&Z;
Y:=&Y;

IF X>Z AND X>Y THEN


DBMS_OUTPUT.PUT_LINE('X= '||X||' IS THE LARGEST VALUE');
ELSIF Z>X AND Z>Y THEN
DBMS_OUTPUT.PUT_LINE('Z= '||Z||' IS THE LARGEST VALUE');
ELSE
DBMS_OUTPUT.PUT_LINE('Y= '||Y||' IS THE LARGEST VALUE');
END IF;
END;
/

2. DECLARE

W INTEGER:=&W;
BEGIN

IF W MOD 2=0 THEN


DBMS_OUTPUT.PUT_LINE('W= '||W||' IS AN EVEN NUMBER');
ELSE
DBMS_OUTPUT.PUT_LINE('W= '||W||' IS AN ODD NUMBER');
END IF;
END;
/

3. DECLARE
GRADE INTEGER;

BEGIN
GRADE:=&GRADE;

IF GRADE>=90 THEN
DBMS_OUTPUT.PUT_LINE('GRADE: A');
ELSIF GRADE BETWEEN 70 AND 89 THEN
DBMS_OUTPUT.PUT_LINE('GRADE: B');
ELSIF GRADE BETWEEN 55 AND 69 THEN
DBMS_OUTPUT.PUT_LINE('GRADE: C');
ELSE
DBMS_OUTPUT.PUT_LINE('GRADE: F');
END IF;
END;
/
4. DECLARE

SALES INTEGER;
COMM FLOAT;

BEGIN

SALES:=&SALES;

IF SALES>20000 THEN
COMM:=0.1;
ELSIF SALES BETWEEN 10000 AND 20000 THEN
COMM:=0.05;
ELSIF SALES BETWEEN 2000 AND 10000 THEN
COMM:=0.03;
ELSE
COMM:=0.02;
END IF;

DBMS_OUTPUT.PUT_LINE('COMMISSION= '||COMM);
DBMS_OUTPUT.PUT_LINE('SALES COMMISSIOM=
'||SALES*COMM);

END;
/

Exercise 3:

1)
LOOP
BEGIN
LOOP
L1:=L1+1;
EXIT WHEN L1>10;
DBMS_OUTPUT.PUT_LINE(L1);
END LOOP;
END;
/
WHILE LOOP
DECLARE

L2 NUMBER(2):=1;

BEGIN
WHILE L2<=10
LOOP
DBMS_OUTPUT.PUT_LINE(L2);
L2:=L2+1;
END LOOP;
END;
/

FOR LOOP
DECLARE

L3 NUMBER(2);

BEGIN
FOR L3 IN 1 .. 10
LOOP
DBMS_OUTPUT.PUT_LINE(L3);
END LOOP;
END;
/

2)
LOOP
DECLARE
P1 NUMBER(2):=11;
BEGIN
LOOP
P1:=P1-1;
EXIT WHEN P1<1;
DBMS_OUTPUT.PUT_LINE(P1);
END LOOP;
END;
/
WHILE LOOP
DECLARE

P2 NUMBER(2):=10;

BEGIN
WHILE P2>=1
LOOP
DBMS_OUTPUT.PUT_LINE(P2);
P2:=P2-1;
END LOOP;
END;
/

FOR LOOP
DECLARE

P3 NUMBER(2);

BEGIN
FOR P3 IN REVERSE 1 .. 10
LOOP
DBMS_OUTPUT.PUT_LINE(P3);
END LOOP;
END;
/

3) DECLARE
N INTEGER:=&N;
FACTOR INTEGER:=1;
BEGIN

FOR NUMM IN 1..N


LOOP
FACTOR:=FACTOR*NUMM;
END LOOP;
DBMS_OUTPUT.PUT_LINE('FACTORIAL OF '||N||' = '||FACTOR);
END;
/
4) DECLARE
PNUM INTEGER:=&PNUM;
ISPRIME INTEGER:=0;
BEGIN
FOR CNUM IN 2 ..PNUM
LOOP
IF PNUM MOD CNUM=0 THEN
ISPRIME:=ISPRIME+1;
END IF;

END LOOP;
IF ISPRIME>=2 THEN
DBMS_OUTPUT.PUT_LINE(PNUM||' IS NOT PRIME' );
ELSE
DBMS_OUTPUT.PUT_LINE(PNUM||' IS PRIME' );
END IF;
END;
/
OR
DECLARE
PNUM INTEGER:=&PNUM;
PRIME BOOLEAN:=TRUE;
BEGIN
FOR CNUM IN 2 ..PNUM-1
LOOP
IF PNUM MOD CNUM=0 THEN
PRIME:=FALSE;
EXIT WHEN PRIME=FALSE;
END IF;
END LOOP;

IF PRIME=TRUE THEN
DBMS_OUTPUT.PUT_LINE(PNUM||' IS PRIME' );
ELSE
DBMS_OUTPUT.PUT_LINE(PNUM||' IS NOT PRIME' );
END IF;
END;
/
5) DECLARE

NUMM INTEGER:=&NUMM;
REV INTEGER;

BEGIN
WHILE NUMM!=0
LOOP
REV:=REV || NUMM MOD 10;
NUMM:=NUMM/10;
EXIT WHEN NUMM=0;
END LOOP;
DBMS_OUTPUT.PUT_LINE(REV);
END;
/

OR
DECLARE
NUMM INTEGER:=&NUM;
REV INTEGER;
BEGIN
FOR N IN REVERSE 1..LENGTH(NUMM)
LOOP
REV:=REV||SUBSTR(NUMM,N,1);
END LOOP;
DBMS_OUTPUT.PUT_LINE(REV);
END;
/
Database Lab Worksheet 7
Exercise 1:

1.
DECLARE
CURSOR C1 IS SELECT EMPLOYEE_ID,LAST_NAME FROM HR.employees
WHERE DEPARTMENT_ID=30;
R C1%ROWTYPE;
BEGIN

OPEN C1;
LOOP

FETCH C1 INTO R;
EXIT WHEN C1%NOTFOUND;

DBMS_OUTPUT.PUT_LINE(R.EMPLOYEE_ID ||' '||R.LAST_NAME);


END LOOP;

CLOSE C1;
END;

/
2.
DECLARE

CURSOR C2 IS SELECT EMPLOYEE_ID,LAST_NAME,JOBS.JOB_ID,JOB_TITLE


FROM HR.employees,HR.jobs
WHERE DEPARTMENT_ID=30 AND HR.employees.JOB_ID=HR.jobs.JOB_ID;

R C2%ROWTYPE;
BEGIN

OPEN C2;
LOOP

FETCH C2 INTO R;
EXIT WHEN C2%NOTFOUND;

IF R.EMPLOYEE_ID BETWEEN 115 AND 118 THEN


DBMS_OUTPUT.PUT_LINE(R.EMPLOYEE_ID ||' '||R.LAST_NAME||'
'||R.JOB_ID||' '||R.JOB_TITLE);

END IF;
END LOOP;

CLOSE C2;
END;
/
3.
DECLARE

CURSOR C3 IS SELECT
DEPARTMENT_NAME,COUNT(EMPLOYEE_ID),MAX(SALARY),MIN(SALARY) FROM
HR.employees,HR.departments

WHERE DEPARTMENTS.DEPARTMENT_ID=EMPLOYEES.DEPARTMENT_ID
GROUP BY DEPARTMENT_NAME;

RNAME HR.departments.DEPARTMENT_NAME%TYPE;
RCOUNT HR.EmployeeS.EMPLOYEE_ID%TYPE;

RMAX HR.employees.SALARY%TYPE;
RMIN HR.employees.SALARY%TYPE;

BEGIN

OPEN C3;
LOOP

FETCH C3 INTO RNAME,RCOUNT,RMAX,RMIN;


EXIT WHEN C3%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(RNAME||' '||RCOUNT||' '||RMAX||' '||RMIN);

END LOOP;
CLOSE C3;

END;
/
4.
DECLARE

CURSOR C4 IS SELECT
DEPARTMENT_NAME,COUNT(EMPLOYEE_ID),MAX(SALARY),MIN(SALARY) FROM
HR.employees,HR.departments

WHERE DEPARTMENTS.DEPARTMENT_ID=EMPLOYEES.DEPARTMENT_ID
GROUP BY DEPARTMENT_NAME;

RNAME VARCHAR2(25);
RCOUNT NUMBER(3);

RMAX NUMBER(8,3);
RMIN NUMBER(8,3);

BEGIN

OPEN C4;
LOOP

FETCH C4 INTO RNAME,RCOUNT,RMAX,RMIN;


EXIT WHEN C4%NOTFOUND;
IF RNAME LIKE 'A%' THEN

DBMS_OUTPUT.PUT_LINE(RNAME||' '||RCOUNT||' '||RMAX||' '||RMIN);


END IF;

END LOOP;
CLOSE C4;

END;
/

You might also like