Database Lab Sol 2022
Database Lab Sol 2022
Exercise 1:
Exercise 2:
CUSTOMER_NAME VARCHAR2(50),
ADDRESS VARCHAR2(50),
CITY VARCHAR2(50));
COURSE_NAME VARCHAR2(15),
DEPARTMEN VARCHAR(3),
BDATE DATE,
MARK NUMBER(3));
Exercise 1:
1. SELECT employee_id,first_name,hire_date as
"EMP#,EMPLOYEE,STARTDATE" FROM HR.employees;
Exercise 2:
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');
Exercise 3:
Exercise 5:
Exercise 1:
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:
7. SELECT
FIRST_NAME,LAST_NAME,LENGTH(First_Name),LENGTH(LAST_NAME),
NULLIF(LENGTH(FIRST_NAME),LENGTH(LAST_NAME)) FROM
HR.employees;
Exercise 3:
Exercise 4:
Exercise 1:
Exercise 2:
Exercise 1:
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;
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;
Exercise 3:
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';
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;
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;
2. DECLARE
W INTEGER:=&W;
BEGIN
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
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;
CLOSE C1;
END;
/
2.
DECLARE
R C2%ROWTYPE;
BEGIN
OPEN C2;
LOOP
FETCH C2 INTO R;
EXIT WHEN C2%NOTFOUND;
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
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
END LOOP;
CLOSE C4;
END;
/