Documente Academic
Documente Profesional
Documente Cultură
Curs final
Structura biletelor de examen
Adrian Runceanu
www.runceanu.ro/adrian
2018
copyright@www.adrian.runceanu.ro
Curs final
30.12.2018 2
copyright@www.adrian.runceanu.ro
B. Proba practica:
Enuntul unei probleme ce se poate rezolva cu
tabelele existente in ORACLE Apex.
30.12.2018 3
copyright@www.adrian.runceanu.ro
A. Proba teoretica:
Subiect I (6p) - intrebari tip grila cu o singura
varianta de raspuns corecta
Subiect II (2p) - enuntul unei probleme simple
30.12.2018 4
copyright@www.adrian.runceanu.ro
Solutie c)
1. Ce se afiseaza cand urmatorul cod va fi executat?
DECLARE
varA NUMBER := 12;
BEGIN
DECLARE Variabila varB este declarata
varB NUMBER := 8; intr-o zona locala, iar apoi
BEGIN este apelata in afara zonei de
varA := varA + varB; vizibilitate!
END;
DBMS_OUTPUT.PUT_LINE(varB);
END;
a) 8
b) 12
c) Nimic, blocul va esua cu o eroare
d) 20
e) VarB
copyright@www.adrian.runceanu.ro
Solutie d)
Solutie a)
a) Adevarat
b) Fals
copyright@www.adrian.runceanu.ro
Solutie d)
BEGIN
DBMS_OUTPUT.PUT_LINE('Primul test grila');
END;
a) procedure
b) subroutine
c) function
d) anonim
copyright@www.adrian.runceanu.ro
Solutie c)
5. Examinati urmatorul cod. Care este valoarea finala a
variabilei V_MYVAR ?
DECLARE
v_myvar NUMBER;
BEGIN
v_myvar := 1 + 2 * 3;
v_myvar := v_myvar * 2;
END;
a) 81
b) 49
c) 14
d) 18
copyright@www.adrian.runceanu.ro
Solutie b)
a) Processing
b) Procedural
c) Primary
d) Proprietary
copyright@www.adrian.runceanu.ro
Solutie c)
7. Ce se intampla dupa executia urmatorului cod ?
BEGIN
FOR i in 1..3 LOOP
DBMS_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.
copyright@www.adrian.runceanu.ro
Solutie a)
8. Examinati urmatorul cod. Care este valoarea finala a
variabilei V_MYBOOL ?
DECLARE
v_mynumber NUMBER; Variabila v_mybool va lua
valoarea false deoarece
v_mybool BOOLEAN; variabila v_mynumber nu este
BEGIN in intervalul inchis 10,20.
v_mynumber := 6;
v_mybool := (v_mynumber BETWEEN 10 AND 20);
v_mybool := NOT (v_mybool);
END;
Variabila v_mybool va lua
a) Adevarat valoarea true prin negatia
b) Fals valorii false obtinuta anterior
copyright@www.adrian.runceanu.ro
Solutie d)
a) %ISOPEN
b) %NOTFOUND
c) %FOUND
d) %ROWCOUNT
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;
Proiectarea bazelor de date 14
30.12.2018
Solutie a) 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
a) Adevarat
b) Fals
a) O sectiune de exceptii
b) Parametri IN
c) Variabile locale in sectiunea IS/AS
d) Instructiunea RETURN in antet
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.2018 32
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
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;
Structura biletelor de examen
B. Proba practica:
Enuntul unei probleme ce se poate rezolva cu
tabelele existente in ORACLE Apex.
30.12.2018 35
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.
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);
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;
Întrebări?