Top Banner
Proiectarea bazelor de date Adrian Runceanu www.runceanu.ro/adrian 2018 Curs final Structura biletelor de examen
39

Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Feb 29, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Proiectarea bazelor de date

Adrian Runceanuwww.runceanu.ro/adrian

2018

Curs finalStructura biletelor de examen

Page 2: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

Curs final

30.12.2018 2

Page 3: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

A. Proba teoretica:Subiect I (6p) - intrebari tip grila cu o singura

varianta de raspuns corecta

Subiect II (2p) - enuntul unei probleme simple

B. Proba practica:Enuntul unei probleme ce se poate rezolva cu

tabelele existente in ORACLE Apex.

30.12.2018 3

Structura biletelor de examen

Page 4: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

A. Proba teoretica:

Subiect I (6p) - intrebari tip grila cu o singuravarianta de raspuns corecta

Subiect II (2p) - enuntul unei probleme simple

30.12.2018 4

Structura biletelor de examen

Page 5: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

Solutie c)

1. Ce se afiseaza cand urmatorul cod va fi executat?DECLARE

varA NUMBER := 12;BEGIN

DECLAREvarB NUMBER := 8;BEGINvarA := varA + varB;END;DBMS_OUTPUT.PUT_LINE(varB);

END;a) 8b) 12c) Nimic, blocul va esua cu o eroared) 20e) VarB

Variabila varB este declarataintr-o zona locala, iar apoi

este apelata in afara zonei de vizibilitate!

Page 6: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

Solutie d)

2. Cand se utilizeaza blocuri imbricate, care blocuri trebuie sa fie etichetate?

a) Blocul interior trebuie sa fie etichetat, blocul exterior poate fi etichetat

b) Ambele blocuri trebuie etichetatec) Blocurile imbricate nu pot fi etichetated) Blocul exterior trebuie sa fie etichetat daca

va fi referit in blocul interior

Page 7: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

Solutie a)

3. Cand apare o exceptie intr-un bloc PL/SQL, instructiunile ramase in sectiunea executabila a blocului sunt omise. Adevarat sau Fals?

a) Adevaratb) Fals

Page 8: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

Solutie d)

4. Ce tip de bloc PL/SQL este definit prin urmatorul cod ?

BEGINDBMS_OUTPUT.PUT_LINE('Primul test grila');

END;

a) procedureb) subroutinec) functiond) anonim

Page 9: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

Solutie c)

5. Examinati urmatorul cod. Care este valoarea finala a variabilei V_MYVAR ?

DECLAREv_myvar NUMBER;

BEGINv_myvar := 1 + 2 * 3;v_myvar := v_myvar * 2;

END;

a) 81b) 49c) 14d) 18

Page 10: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

Solutie b)

6. Litera P in expresia PL/SQL vine de la:

a) Processingb) Proceduralc) Primaryd) Proprietary

Page 11: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

Solutie c)

7. Ce se intampla dupa executia urmatorului cod ? BEGIN

FOR i in 1..3 LOOPDBMS_OUTPUT.PUT_LINE (i);i := i + 1;

END LOOP;END;a) Se afiseaza 1, 2, 3.b) Se afiseaza 2, 3, 4.c) Va rezulta o eroare deoarece nu se poate modifica

contorul intr-o bucla FOR.d) Va rezulta o eroare deoarece contorul nu a fost declarat

in mod explicit.

Page 12: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

Solutie a)

8. Examinati urmatorul cod. Care este valoarea finala a variabilei V_MYBOOL ?

DECLAREv_mynumber NUMBER;v_mybool BOOLEAN;

BEGINv_mynumber := 6;v_mybool := (v_mynumber BETWEEN 10 AND 20);v_mybool := NOT (v_mybool);

END;a) Adevaratb) Fals

Variabila v_mybool va luavaloarea false deoarece

variabila v_mynumber nu estein intervalul inchis 10,20.

Variabila v_mybool va luavaloarea true prin negatia

valorii false obtinuta anterior

Page 13: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

Solutie d)

9. Care dintre atributele cursorului este setat la numarul total de linii ?

a) %ISOPENb) %NOTFOUNDc) %FOUNDd) %ROWCOUNT

Page 14: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 1

Examinati urmatorul fragment de cod:

DECLARE

CURSOR emp_cursor IS

SELECT ename, sal, job FROM emp;

v_emp_rec emp_cursor%ROWTYPE;

BEGIN

FETCH emp_cursor INTO v_emp_rec;

DBMS_OUTPUT.PUT_LINE (... Punctul A ...);

END;

30.12.2018Proiectarea bazelor de date 14

Page 15: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 1(continuare)

Pentru a extrage valoarea din coloana ename,

ce ar trebui sa scrieti in Punctul A?

a) v_emp_rec.ename

b) v_emp_rec(ename)

c) v_emp_rec

d) ename

e) Nicio varianta nu este corecta

30.12.2018Proiectarea bazelor de date 15

Solutie a)

Page 16: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 3

O functie PL/SQL poate avea parametrii IN OUT.

Adevarat sau Fals?

a) Adevarat

b) Fals

30.12.2018Proiectarea bazelor de date 17

Solutie b)

Page 17: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 4

Care dintre urmatoarele aspecte se gasesc

intr-o functie si nu se gasesc intr-o

procedura?

a) O sectiune de exceptii

b) Parametri IN

c) Variabile locale in sectiunea IS/AS

d) Instructiunea RETURN in antet

30.12.2018Proiectarea bazelor de date 18

Solutie d)

Page 18: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 5

Procedura p1 are un singur parametru OUT de tip

DATE.

Functia f1 returneaza o valoare de tip DATE.

Care este diferenta dintre p1 si f1?

a) p1 se poate invoca dintr-un bloc anonim, dar f1 nu

se poate

b) f1 poate fi folosita intr-o instructiune SQL, dar p1 nu

poate fi folosita

c) p1 poate sa aiba oricati parametrii IN are nevoie, dar

f1 nu poate avea mai mult de doi parametrii IN

d) Nu este nicio diferenta deoarece amandoua

returneaza o singura valoare in aceeasi baza de date

30.12.2018Proiectarea bazelor de date 19

Solutie b)

Page 19: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 6

CREATE FUNCTION get_sal_example (p_id

emp.empno%TYPE)

RETURN number

IS

v_sal emp.sal%TYPE := 0;

BEGIN

SELECT sal INTO v_sal

FROM emp

WHERE empno = p_id;

RETURN v_sal;

END get_sal_example;

30.12.2018Proiectarea bazelor de date 20

Page 20: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 6(continuare)

Care variabila este transferata functiei si care variabila

este returnata de catre functie?

a) GET_SAL este transferata si V_SAL este returnata

b) SAL este transferata si P_ID este returnata

c) EMPNO este transferata si SAL este returnata

d) P_ID este transferata si V_SAL este returnata

30.12.2018Proiectarea bazelor de date 21

Solutie d)

Page 21: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 7

Care din aceste exceptii pot fi manipulate intr-o

sectiune EXCEPTION dintr-un bloc PL/SQL?

a) O incercare de impartire la zero

b) O instructiune SELECT care nu returneaza

nicio linie

c) Orice tip de exceptie care poate aparea intr-

un bloc

d) Toate cele trei variante

e) Niciunul dintre cele de mai sus

30.12.2018Proiectarea bazelor de date 22

Solutie d)

Page 22: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 8

Cum poti “prinde” o exceptie a serverului

Oracle ORA-01403: no data found?

a) WHEN NO DATA FOUND THEN ...

b) WHEN ORA-01403 THEN ...

c) WHEN NO_DATA_FOUND THEN ...

d) WHEN SQL%ROWCOUNT=0 THEN ...

30.12.2018Proiectarea bazelor de date 23

Solutie c)

Page 23: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 9

Ce fel de cod este stocat intr-o procedura ?

a) doar SQL

b) doar PL/SQL

c) Un amestec de SQL si PL/SQL

d) Un amestec de SQL si PL/SQL si Java

30.12.2018Proiectarea bazelor de date 24

Solutie c)

Page 24: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 10

Ce nu este corect in urmatoarea secventa de cod?

CREATE OR REPLACE TRIGGER mytrigg

AFTER DELETE ON dept

BEGIN

INSERT INTO audit_table (who, when)

VALUES (USER, SYSDATE);

COMMIT;

END;

30.12.2018Proiectarea bazelor de date 25

Page 25: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 10(continuare)

a) Un trigger DML nu poate sa contina o

instructiune DML cum ar fi INSERT INTO

audit_table

b) Nu se poate utiliza COMMIT intr-un trigger.

c) Ultima linie a codului trebuie sa aiba END

mytrigg;

d) A doua linie ar trebui sa fie: AFTER

DELETE OF DEPT

e) Nimic nu este incorect, trigger-ul se va

executa cu succes

30.12.2018Proiectarea bazelor de date 26

Solutie b)

Page 26: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 11Blocul urmator afiseaza:

DECLARE

v_x NUMBER(9,2):=10;

v_y NUMBER(9,2);

v_message VARCHAR2(20);

BEGIN

v_y:= NULL;

IF v_x!=v_y THEN v_message := ‘NOT EQUAL’;

ELSE v_message := ‘EQUAL’;

END IF;

DBMS_OUTPUT.PUT_LINE(v_message);

END;

30.12.2018Proiectarea bazelor de date 27

a) NOT EQUAL

b) EROARE

c) EQUAL

d) nimic

Solutie a)

Page 27: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 12Pentru ca urmatorul bloc PL/SQL sa fie corect trebuie

adaugat la linia 8 urmatorul cod:

1 DECLARE

2 TYPE ang_record_type IS RECORD (

3 nume VARCHAR2(20),

4 departament NUMBER);

5 ang_record ang_record_type;

6 BEGIN

7 SELECT nume, id_departament

8 ……………………………………..

9 FROM angajati

10 WHERE id_angajat =100;

11 DBMS_OUTPUT.PUT_LINE (‘Nume’ || ang_record.nume ||’ Departament ‘ ||

12 ang_record.departament);

13 END;

30.12.2018Proiectarea bazelor de date 28

a) INTO ang_record_type%type

b) INTO ang_record_type%rowtype

c) INTO ang_record_type

d) INTO ang_record

Solutie d)

Page 28: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 13

Care dintre urmatoarele vizualizari poate fi folosita

in urmatoarea comanda pentru a vizualiza codul

complet al subprogramului P1:

SELECT TEXT

FROM ….

WHERE NAME = UPPER(’P1’);

30.12.2018Proiectarea bazelor de date 29

a) USER_OBJECTS

b) USER_ERRORS

c) USER_FUNCTIONS

d) USER_SOURCE

Solutie d)

Page 29: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 14

Ce trebuie adaugat la linia 9 pentru ca urmatoarea functie sa fie corect

creata?

1. CREATE OR REPLACEFUNCTION nr_sal(v_dept NUMBER)

2. RETURN NUMBER IS

3. v_numar NUMBER(3);

4. BEGIN

5. SELECT COUNT(*)

6. INTO v_numar

7. FROM angajati

8. WHERE id_departament=v_dept;

9. ………………………………………………………..

10. END nr_sal;

30.12.2018Proiectarea bazelor de date 30

a) DBMS_OUTPUT.PUT_LINE(v_numar);

b) COMMIT;

c) RETURN v_numar;

d) nu mai trebuie adaugat nimic.

Solutie c)

Page 30: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Grila 15

Care dintre urmatoarele afirmatii nu este corecta?

a) Un trigger poate fi redenumit utilizand o comanda

ALTER TRIGGER.

b) Dupa ce este definit, triggerul devine activ si va fi

executat ori de cate ori au loc operatiile

declansatoare asociate acestuia.

c) Un trigger poate fi recompilat utilizand o comanda

ALTER TRIGGER.

d) Un trigger la nivel de linie este executat o singura

data, indiferent de numarul de linii afectate de

comanda declansatoare.

30.12.2018Proiectarea bazelor de date 31

Solutie c)

Page 31: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

[email protected]

A. Proba teoretica:

Subiect I (6p) - intrebari tip grila cu o singuravarianta de raspuns corecta

Subiect II (2p) - enuntul unei probleme simple

30.12.2018 32

Structura biletelor de examen

Page 32: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Exemplu de Problema pentru subiectul II

Să se specifice dacă un departament este mare, mediu sau

mic după cum numărul angajaţilor săi este mai mare ca 30,

cuprins între 10 şi 30 sau mai mic decât 10.

Codul departamentului va fi initializat.

In variabila v_numar se va numara cati angajati are

departamentul, iar in variabila v_comentariu se introduce

una din valorile cerute(‘mic’, ‘mare’ sau ‘mediu’).

DECLARE

p_cod_dep VARCHAR2(50):=30;

v_cod_dep dept.deptno%TYPE := p_cod_dep;

v_numar NUMBER(3) := 0;

v_comentariu VARCHAR2(10);

BEGIN

...

END

Page 33: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

solutie

DECLARE

p_cod_dep VARCHAR2(50):=3;

v_cod_dep dept.deptno%TYPE := p_cod_dep;

v_numar NUMBER(3) := 0;

v_comentariu VARCHAR2(10);

BEGIN

SELECT COUNT(*)

INTO v_numar

FROM emp

WHERE deptno = v_cod_dep;

IF v_numar < 10 THEN

v_comentariu := 'mic';

ELSIF v_numar BETWEEN 10 AND 30 THEN

v_comentariu := 'mediu';

ELSE

v_comentariu := 'mare';

ENDIF;

DBMS_OUTPUT.PUT_LINE('Departamentul avand codul ' || v_cod_dep

|| ' este de tip ' || v_comentariu);

END;

Page 34: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

B. Proba practica:

Enuntul unei probleme ce se poate rezolva cu

tabelele existente in ORACLE Apex.

30.12.2018 35

Structura biletelor de examen

Page 35: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Exemplu de problema propusa pentru proba

practica

Se considera tabela emp in care se

gestioneaza informatii despre angajatii unei

firme.

Să se afişeze lista cu numele şi salariul

angajaţilor din fiecare departament in parte

folosind o structura repetitiva simpla

(LOOP).

Precizare: numarul maxim de departamente

este 50.

Page 36: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

solutie

declare

v_contor number(2) :=1;

v_deptno number;

v_dname varchar2(10);

v_loc varchar2(10);

begin

loop

begin

select deptno, dname, loc into v_deptno, v_dname, v_loc

from dept

where deptno=v_contor;

dbms_output.put_line('Dep.cu cod '|| v_contor||' se

numeste '||v_dname||' si este in '||v_loc);

Page 37: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Solutie(continuare)

exception

when no_data_found then

dbms_output.put_line('Nu exista departamentul

cu cod '|| v_contor);

end;

v_contor := v_contor + 1;

exit when v_contor > 50;

end loop;

exception

when others then

dbms_output.put_line('Exceptie');

end;

Page 38: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi
Page 39: Curs final Structura biletelor de examen Adrian Runceanu · 2019-01-01 · Curs final Structura biletelor de examen. copyright@ Curs final ... Să se afişeze lista cu numele şi

Întrebări?

30.12.2018 Proiectarea bazelor de date 40