You are on page 1of 6

OUTPUT

SQL>Rem 1.Check whether the given model is manufactured by any


maker. If available, display the maker full name and country
else display.
SQL> SET SERVEROUTPUT ON;
SQL> DECLARE
2 mkr VARCHAR2(30);
3 fn VARCHAR2(30);
4 cn VARCHAR2(30);
5 BEGIN
6 mkr := '&mkr';
7 SELECT FULLNAME,COUNTRYNAME
8 INTO fn,cn
9 FROM MODEL_DETAILS md INNER JOIN CAR_MAKERS cm ON
cm.ID=md.MAKER INNER JOIN COUNTRIES c ON
c.COUNTRYID=cm.COUNTRY
10 WHERE MODEL=mkr;
11 DBMS_OUTPUT.PUT_LINE('The model is manufactured');
12 DBMS_OUTPUT.PUT_LINE('Maker Name:'||fn);
13 DBMS_OUTPUT.PUT_LINE('Country :'||cn);
14 EXCEPTION
15 WHEN NO_DATA_FOUND THEN
16 DBMS_OUTPUT.PUT_LINE('The given model is not
manufactured / Invalid Model');
17 END;
18 /

Enter value for mkr: mercedes


old 6: mkr := '&mkr';
new 6: mkr := 'mercedes';
The model is manufactured
Maker Name:Daimler Benz
Country :germany

PL/SQL procedure successfully completed.

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 /

Enter value for mlg1: 35.5


old 2: mlg1 NUMBER(3,1) :='&mlg1';
new 2: mlg1 NUMBER(3,1) :='35.5';
Car ID MODEL CAR NAME MILEAGE
--------------------------------------------------------------
303 dodge dodge colt hatchback custom 35.5
--------------------------------------------------------------
1 car(s) found EQUAL/CLOSEST to given mileage

PL/SQL procedure successfully completed.

SQL> Rem 3. For a given country name, display the number of


cars manufactured in each model by the car makers as shown
below. Check for the availability of country name.
SQL>
SQL>
SQL>
SQL> DECLARE
2 get_country VARCHAR(40);
3 cars NUMBER(10);
4 model VARCHAR(40);
5 makername VARCHAR(40);
6 total NUMBER(10);
7 tmp NUMBER(10);
8 CURSOR C is
9 SELECT CM.FULLNAME, CN.MODEL, COUNT(CN.ID)
10 FROM CAR_NAMES CN INNER JOIN MODEL_DETAILS MD ON CN.MODEL
= MD.MODEL
11 INNER JOIN CAR_MAKERS CM ON MD.MAKER = CM.ID
12 INNER JOIN COUNTRIES CO ON CM.COUNTRY = CO.COUNTRYID
13 WHERE CO.COUNTRYNAME = get_country
14 GROUP BY CM.FULLNAME, CN.MODEL;
15
16
17
18 BEGIN
19 get_country := '&get_country';
20 OPEN C;
21 SELECT count(COUNTRYNAME) INTO tmp
22 FROM COUNTRIES
23 WHERE COUNTRYNAME = get_country;
24 IF (tmp = 0) THEN
25 dbms_output.put_line('COUNTRY NOT IN DATABASE');
26 ELSE
27
28 FETCH C INTO makername, model, cars;
29 IF (C%notfound) THEN
30 dbms_output.put_line('The country ' || get_country || '
does not produce any cars');
31 ELSE
32 dbms_output.put_line('Country Name: ' || get_country);
33 dbms_output.put_line('Maker Name' || ' ' || 'Model'
|| ' ' || 'No. of Cars');
34 LOOP
35 dbms_output.put_line(makername || ' ' || model || '
' || cars);
36 FETCH C INTO makername, model, cars;
37 EXIT WHEN C%notfound;
38
39 END LOOP;
40 END IF;
41 END IF;
42 CLOSE C;
43
44 END;
45 /

Enter value for get_country: japan


old 19: get_country := '&get_country';
new 19: get_country := 'japan';
Country Name: japan
Maker Name Model No. of Cars
Subaru subaru 4
Honda honda 13
Mazda mazda 12
Nissan Motors datsun 23
Toyota toyota 26
Nissan Motors nissan 1

PL/SQL procedure successfully completed.

SQL>

You might also like