You are on page 1of 3

CREATE TABLE soferi_XY(

codpers NUMBER(5) PRIMARY KEY,


nume VARCHAR2(30),
categ VARCHAR2(1));

CREATE TABLE parc_XY (


id_auto NUMBER(3) NOT NULL,
nrauto VARCHAR2(8) NOT NULL,
nr_locuri NUMBER(2),
CONSTRAINT id_auto_pk_XY PRIMARY KEY (id_auto));

CREATE TABLE curse_XY (


id_cursa NUMBER (5),
codpers NUMBER (5),
id_auto NUMBER(3),
data_cursa DATE,
incasari NUMBER(5),
CONSTRAINT id_cursa_pk_XY PRIMARY KEY (id_cursa),
CONSTRAINT codpers_fk_XY FOREIGN KEY (codpers) REFERENCES soferi_XY(codpers),
CONSTRAINT id_auto_fk_XY FOREIGN KEY (id_auto) REFERENCES parc_XY(id_auto));

INSERT INTO soferi_XY VALUES(10, 'Popescu', 'B');


INSERT INTO soferi_XY VALUES(20, 'Ionescu', 'C');
INSERT INTO soferi_XY VALUES(30, 'Georgescu', 'F');
INSERT INTO soferi_XY VALUES(40, 'Florescu', 'B');
INSERT INTO soferi_XY VALUES(50, 'Dumitrescu', 'F');
INSERT INTO parc_XY VALUES(100, 'TM17ABC', 24);
INSERT INTO parc_XY VALUES(200, 'TM19AOS', 44);
INSERT INTO parc_XY VALUES(300, 'TM21BOC', 10);
INSERT INTO parc_XY VALUES(400, 'TM44DEF', 16);
INSERT INTO parc_XY VALUES(500, 'TM22GHK', 8);
INSERT INTO curse_XY VALUES(1001, 10, 100,
TO_DATE('10.02.2020','dd.mm.yyyy'),1233 );
INSERT INTO curse_XY VALUES(1002, 20, 100,
TO_DATE('11.02.2020','dd.mm.yyyy'),725 );
INSERT INTO curse_XY VALUES(1003, 10, 200,
TO_DATE('11.02.2020','dd.mm.yyyy'),1250 );
INSERT INTO curse_XY VALUES(1004, 30, 300,
TO_DATE('12.02.2020','dd.mm.yyyy'),1190 );
INSERT INTO curse_XY VALUES(1005, 10, 400,
TO_DATE('12.02.2020','dd.mm.yyyy'),644 );
INSERT INTO curse_XY VALUES(1006, 30, 500,
TO_DATE('13.02.2020','dd.mm.yyyy'),1750 );
INSERT INTO curse_XY VALUES(1007, 20, 100,
TO_DATE('13.02.2020','dd.mm.yyyy'),1860 );

INSERT INTO curse_XY VALUES(1008, 40, 400,


TO_DATE('13.02.2020','dd.mm.yyyy'),540 );
INSERT INTO curse_XY VALUES(1009, 30, 200,
TO_DATE('14.02.2020','dd.mm.yyyy'),1750 );
INSERT INTO curse_XY VALUES(1000, 50, 300,
TO_DATE('15.02.2020','dd.mm.yyyy'),325 );
INSERT INTO curse_XY VALUES(1010, 40, 500,
TO_DATE('15.02.2020','dd.mm.yyyy'),875 );
INSERT INTO curse_XY VALUES(1011, 20, 400,
TO_DATE('16.02.2020','dd.mm.yyyy'),2411 );
INSERT INTO curse_XY VALUES(1012, 50, 500,
TO_DATE('16.02.2020','dd.mm.yyyy'),2666 );
INSERT INTO curse_XY VALUES(1013, 40, 200,
TO_DATE('18.02.2020','dd.mm.yyyy'),2700 );

Programul meu:

CREATE OR REPLACE PROCEDURE afis_auto(v_auto parc_xy.id_auto%TYPE) AS


contor NUMBER:=0;
v_nr parc_xy.nrauto%TYPE;
v_counter NUMBER:=0;
v_categ soferi_XY.categ%TYPE;
curse NUMBER:=0;

no_data EXCEPTION;

CURSOR c IS
SELECT parc_xy.nrauto,COUNT(nrauto)
FROM parc_xy INNER JOIN curse_xy on parc_xy.id_auto=curse_xy.id_auto
WHERE id_auto=v_auto group by parc_xy.id_auto, parc_xy.nrauto;

BEGIN
OPEN c;
LOOP
FETCH c INTO v_nr,v_counter;
EXIT WHEN c%NOTFOUND;
contor:=contor+1;
DBMS_OUTPUT.PUT_LINE(contor||'Autoturismul cu numarul '||v_nr||' a fost
condus de'||v_counter||' ori');
curse:=curse+v_categ;
END LOOP;
CLOSE c;

IF curse>0 THEN

DBMS_OUTPUT.PUT_LINE('-----------------------------------------------');
DBMS_OUTPUT.PUT_LINE ('Categoria '||v_categ||'are '||curse||' curse');
ELSE
RAISE no_data;
END IF;

EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('-----------------------------------');
DBMS_OUTPUT.PUT_LINE ('Nu exista masina cu id ul'||v_auto);
END;

BEGIN
afis_auto('100');
afis_auto('101');
END;
/

SET SERVEROUTPUT ON;

You might also like