Professional Documents
Culture Documents
SQL> Rem 2.An user is desired to buy a car with the specific
mileage. Ask the user for a mileage, and find the car that is
equal or closest to the desired mileage. Print the car number,
model, description and mileage. Also print the number of
car(s) that is equal or closest to the given mileage
SQL>
SQL>
SQL>
SQL>
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
2 mlg1 NUMBER(3,1) :='&mlg1';
3 cmlg NUMBER(3,1);
4 cno NUMBER(5);
5 model VARCHAR2(30);
6 dsc VARCHAR2(30);
7 tot_rows VARCHAR2(5);
8 CURSOR c IS SELECT
cd.ID,cn.MODEL,cn.DESCRIPTION,cd.MPG FROM CAR_DETAILS cd INNER
JOIN CAR_NAMES cn ON cn.ID=cd.ID
9 WHERE ABS(mlg1-MPG) = (
10 SELECT MIN(ABS(mlg1-MPG))
11 FROM CAR_DETAILS );
12 c_obj c%ROWTYPE;
13 --TYPE c_table IS TABLE OF c%ROWTYPE;
14 --c_obj c_table;
15 BEGIN
16 SELECT COUNT(ABS(mlg1-MPG)) INTO tot_rows
17 FROM CAR_DETAILS
18 WHERE ABS(mlg1-MPG) = (
19 SELECT MIN(ABS(mlg1-MPG))
20 FROM CAR_DETAILS
21 );
22 OPEN c;
23 LOOP
24 FETCH c INTO cno,model,dsc,cmlg;
25 EXIT WHEN c%notfound;
26 DBMS_OUTPUT.PUT_LINE('Car ID MODEL
CAR NAME MILEAGE');
27 DBMS_OUTPUT.PUT_LINE('----------------------------------
-------------------------------');
28 DBMS_OUTPUT.PUT_LINE( cno||' '||model||'
'||dsc||' '||mlg1);
29 DBMS_OUTPUT.PUT_LINE('----------------------------------
-------------------------------');
30 -- WHEN NO_DATA_FOUND THEN
31 -- DBMS_OUTPUT.PUT_LINE('No matching or closely matching
rows found!');
32 END LOOP;
33 DBMS_OUTPUT.PUT_LINE(tot_rows|| ' car(s) found
EQUAL/CLOSEST to given mileage ');
34 --EXCEPTION
35 END;
36 /
SQL>