Sunteți pe pagina 1din 6

Creaţi blocuri anonime pentru rezolvarea următoarelor exerciţii:

1.      Testaţi dacă un număr – memorat într-o variabilă – este par;

DECLARE

V_NUMAR NUMBER:=10;

BEGIN

IF MOD(V_NUMAR,2) = 0 THEN DBMS_OUTPUT.PUT_LINE('NUMARUL ESTE PAR');

ELSE DBMS_OUTPUT.PUT_LINE('NUMARUL ESTE IMPAR');

END IF;

END;

2.      Se dă transcrierea în litere pentru numerele de la 1 la 9. Avem o variabilă care poate conţine
un număr întreg între 11 şi 20, reprezentând sume în lei. Afişaţi suma în lei în litere (ca la
bancă/poştă), găsind câteva reguli de compunere ale numeralelor şi folosind transcrierile cifrelor
de la 1 la 9. Se va rezolva cu structuri IF;

DECLARE

    n NUMBER := 14;

    sir VARCHAR2(20) := 'sprezece';

    unu VARCHAR2(20) := 'unu';

doi VARCHAR2(20) := 'doi';

trei VARCHAR2(20) := 'trei';

patru VARCHAR2(20):= 'patru';

cinci VARCHAR2(20):='cinci ';

sase VARCHAR2(20):= 'sase';

sapte VARCHAR2(20):= 'sapte';

opt VARCHAR2(20):= 'opt';

noua VARCHAR2(20):= 'noua';

m NUMBER;
final VARCHAR2(20);

BEGIN

m := MOD(n,10);

  IF m=1 THEN

   final:='unsprezece';

ELSIF m=4 THEN 

final :='paisprezece';

ELSIF m=6 THEN

final:='saisprezece';

  ELSIF m=2 THEN

    final:=CONCAT(doi,sir);

ELSIF m=3 THEN

final:=CONCAT(trei,sir);

ELSIF m=5 THEN

final:=CONCAT(cinci,sir);

ELSIF m=7 THEN

final:=CONCAT(sapte,sir);

ELSIF m=8 THEN

final:=CONCAT(opt,sir);

ELSIF m=9 THEN

final:=CONCAT(noua,sir);

  END IF;

dbms_output.Put_line(final);

END;

 
3.      Rezolvaţi aceeaşi problemă cu o structură CASE;

DECLARE

unit INTEGER;

unit_in_litere VARCHAR(10):='sprezece';

nr NUMBER(2):=15;

nr_in_litere VARCHAR(15);

BEGIN

unit:=mod(nr,10);

CASE unit

WHEN '1' THEN nr_in_litere:='un'||unit_in_litere;

WHEN '2' THEN nr_in_litere:='doi'||unit_in_litere;

WHEN '3' THEN nr_in_litere:='trei'||unit_in_litere;

WHEN '4' THEN nr_in_litere:='pai'||unit_in_litere;

WHEN '5' THEN nr_in_litere:='cinci'||unit_in_litere;

WHEN '6' THEN nr_in_litere:='sai'||unit_in_litere;

WHEN '7' THEN nr_in_litere:='sapte'||unit_in_litere;

WHEN '8' THEN nr_in_litere:='opt'||unit_in_litere;

WHEN '9' THEN nr_in_litere:='noua'||unit_in_litere;

ELSE

nr_in_litere:='douazeci';

END CASE;

DBMS_OUTPUT.PUT_LINE(nr_in_litere);

END;

4.      Apoi cu o expresie CASE;


DECLARE

unit INTEGER;

unit_litere VARCHAR(10):='sprezece';

nr NUMBER(2):=15;

nr_in_litere VARCHAR(15);

BEGIN

unit:=mod(nr,10);

CASE unit

WHEN '1' THEN nr_in_litere:='un'||unit_litere;

WHEN '2' THEN nr_in_litere:='doi'||unit_litere;

WHEN '3' THEN nr_in_litere:='trei'||unit_litere;

WHEN '4' THEN nr_in_litere:='pai'||unit_litere;

WHEN '5' THEN nr_in_litere:='cinci'||unit_litere;

WHEN '6' THEN nr_in_litere:='sai'||unit_litere;

WHEN '7' THEN nr_in_litere:='sapte'||unit_litere;

WHEN '8' THEN nr_in_litere:='opt'||unit_litere;

WHEN '9' THEN nr_in_litere:='noua'||unit_litere;

ELSE

nr_in_litere:='douazeci';

END CASE;

DBMS_OUTPUT.PUT_LINE(nr_in_litere);

END;

5.      O persoană s-a născut între anii 1950-2000. În funcţie de anul naşterii să se afişeze mesaje
precum: „Domnul X s-a născut în anii ’80.” Testaţi funcţionalitatea secvenţelor ELSIF, în cazul în
care le schimbaţi ordinea;

DECLARE 
v_age NUMBER:=1976;

BEGIN

IF v_age<1950

THEN DBMS_OUTPUT.PUT_LINE('Domnul X nu s-a nascut in interval');

ELSIF v_age<1960

THEN DBMS_OUTPUT.PUT_LINE('Domnul X s-a nascut in anii 50');

ELSIF v_age<1970

THEN DBMS_OUTPUT.PUT_LINE('Domnul X s-a nascut in anii 60');

ELSIF v_age<1980

THEN DBMS_OUTPUT.PUT_LINE('Domnul X s-a nascut in anii 70');

ELSIF v_age<1990

THEN DBMS_OUTPUT.PUT_LINE('Domnul X s-a nascut in anii 80');

ELSIF v_age<2000

THEN DBMS_OUTPUT.PUT_LINE('Domnul X s-a nascut in anii 90');

ELSE 

DBMS_OUTPUT.PUT_LINE('Domnul X s-a nascut in secolul 21');

END IF;

END;

6.  Calculaţi factorialul unui număr memorat într-o variabilă. Se vor folosi toate variantele de
   
structuri iterative cunoscute;

DECLARE

   v_var_init NUMBER(2) := 3;

   v_factorial NUMBER(10):=1;

BEGIN

   FOR i in 1..v_var_init LOOP


      v_factorial:=v_factorial*i;

   END LOOP;

   DBMS_OUTPUT.PUT_LINE(v_factorial);

END;

7.      Să se introducă în cadrul tabelei Angajati 4 înregistrări: Id-urile să fie următoarele 4 numere
luate secvenţial, numele şi prenumele vor fi generice „Nume”/”Prenume” concatenat cu id-ul.
Toţi au fost angajaţi acum o lună ca reprezentanţi de vânzări cu salariul minim al acestei
categorii, căruia i se adaugă un spor generat aleatoriu între 200 şi 500$.

DECLARE

v_emp_id employees.employee_id%TYPE;

v_conter NUMBER(2);

BEGIN

SELECT MAX(employee_id) INTO v_emp_id FROM employees

WHERE hire_date>'09-Jul-2013';

LOOP

INSERT INTO locations(employee_id, first_name, last_name)

VALUES((v_emp_id + v_counter), 'Nume', 'Prenume');

v_counter := v_counter + 1;

EXIT WHEN v_counter > 4;

END LOOP;

END;

S-ar putea să vă placă și