Sunteți pe pagina 1din 8

// 1

DECLARE
v_id_angajat angajati.id_angajat%TYPE;
v_salariul angajati.salariul%TYPE;
v_salariulnou angajati.salariul%TYPE;
v_numarcomenzi NUMBER;

BEGIN
-- Pasul 1:
v_id_angajat := &IdAngajat;
SELECT salariul INTO v_salariul
FROM angajati
WHERE id_angajat = v_id_angajat;

SELECT COUNT(*)
INTO v_numarcomenzi
FROM comenzi
WHERE id_angajat = v_id_angajat;

-- Verificăm numărul de comenzi și actualizăm salariul conform cerințelor specificate


IF v_numarcomenzi BETWEEN 3 AND 7 THEN
v_salariulnou := v_salariul * 1.1;
UPDATE angajati
SET salariul = salariul * 1.1
WHERE id_angajat = v_id_angajat;
ELSIF v_numarcomenzi > 7 THEN
v_salariulnou := v_salariul * 1.2;
UPDATE angajati
SET salariul = salariul * 1.2
WHERE id_angajat = v_id_angajat;
ELSE
v_salariulnou := v_salariul;
END IF;

DBMS_OUTPUT.PUT_LINE('Angajatul ' || v_id_angajat || ' Salariul vechi ' || v_salariul || '


Salariul nou ' || v_salariulnou || ' Comenzi ' || v_numarcomenzi);
END;
// 2
DECLARE
v_nume angajati.nume%TYPE;
v_salariul angajati.salariul%TYPE;
v_data_angajare angajati.data_angajare%TYPE;
v_vechime NUMBER(10,2);
BEGIN
FOR ang IN 100..120 LOOP
SELECT nume, salariul, data_angajare
INTO v_nume, v_salariul, v_data_angajare
FROM angajati
WHERE id_angajat = ang;

-- Calculăm vechimea angajatului în ani


v_vechime := MONTHS_BETWEEN(SYSDATE, v_data_angajare) / 12;

-- Afișăm informațiile despre angajat


DBMS_OUTPUT.PUT_LINE('Angajatul ' || v_nume || ' are salariul ' || v_salariul || ' si
vechimea de ' || v_vechime || ' ani.');
END LOOP;
END;

// 2 WHILE
DECLARE
v_nume angajati.nume%TYPE;
v_salariul angajati.salariul%TYPE;
v_data_angajare angajati.data_angajare%TYPE;
v_vechime NUMBER(10,2);
v_count INTEGER := 100;
BEGIN
WHILE v_count <= 120 LOOP
SELECT nume, salariul, data_angajare
INTO v_nume, v_salariul, v_data_angajare
FROM angajati
WHERE id_angajat = v_count;

-- Calculăm vechimea angajatului în ani


v_vechime := MONTHS_BETWEEN(SYSDATE, v_data_angajare) / 12;

-- Afișăm informațiile despre angajat


DBMS_OUTPUT.PUT_LINE('Angajatul ' || v_nume || ' are salariul ' || v_salariul || ' si
vechimea de ' || v_vechime || ' ani.');
v_count := v_count + 1;
END LOOP;
END;

// 2 Loop Exit When


DECLARE
v_nume angajati.nume%TYPE;
v_salariul angajati.salariul%TYPE;
v_data_angajare angajati.data_angajare%TYPE;
v_vechime NUMBER(10,2);
v_count INTEGER := 100;
BEGIN
LOOP
SELECT nume, salariul, data_angajare
INTO v_nume, v_salariul, v_data_angajare
FROM angajati
WHERE id_angajat = v_count;

-- Calculăm vechimea angajatului în ani


v_vechime := MONTHS_BETWEEN(SYSDATE, v_data_angajare) / 12;

-- Afișăm informațiile despre angajat


DBMS_OUTPUT.PUT_LINE('Angajatul ' || v_nume || ' are salariul ' || v_salariul || ' si
vechimea de ' || v_vechime || ' ani.');
v_count := v_count + 1;
EXIT WHEN v_count = 120;
END LOOP;
END;

// 3 FOR
DECLARE
v_nume angajati.nume%TYPE;
v_sal angajati.salariul%TYPE;
v_vechime NUMBER(10, 2);
v_min NUMBER;
v_max NUMBER;
i NUMBER;
BEGIN
SELECT MIN(id_angajat), MAX(id_angajat) INTO v_min, v_max
FROM angajati;

FOR i IN v_min..v_max LOOP


SELECT nume, salariul, (SYSDATE-data_angajare)/365
INTO v_nume, v_sal, v_vechime
FROM angajati WHERE id_angajat = i;
DBMS_OUTPUT.PUT_LINE('Angajatul ' || v_nume || ' are salariul ' || v_sal || ' si vechimea
de ' || v_vechime || ' ani.');
END LOOP;
END;

// 3 While

DECLARE
v_nume angajati.nume%TYPE;
v_sal angajati.salariul%TYPE;
v_vechime NUMBER(10, 2);
v_min NUMBER;
v_max NUMBER;
i NUMBER;
BEGIN
SELECT MIN(id_angajat), MAX(id_angajat) INTO v_min, v_max
FROM angajati;

WHILE i <= v_max LOOP


SELECT nume, salariul, (SYSDATE-data_angajare)/365
INTO v_nume, v_sal, v_vechime
FROM angajati WHERE id_angajat = i;
DBMS_OUTPUT.PUT_LINE('Angajatul ' || v_nume || ' are salariul ' || v_sal || ' si vechimea
de ' || v_vechime || ' ani.');
i := i + 1;
END LOOP;
END;

// 3 Exit When
DECLARE
v_nume angajati.nume%TYPE;
v_sal angajati.salariul%TYPE;
v_vechime NUMBER(10, 2);
v_min NUMBER;
v_max NUMBER;
i NUMBER;
BEGIN
SELECT MIN(id_angajat), MAX(id_angajat) INTO v_min, v_max
FROM angajati;

i := v_min;
LOOP
SELECT nume, salariul, (SYSDATE-data_angajare)/365
INTO v_nume, v_sal, v_vechime
FROM angajati WHERE id_angajat = i;
DBMS_OUTPUT.PUT_LINE('Angajatul ' || v_nume || ' are salariul ' || v_sal || ' si vechimea
de ' || v_vechime || ' ani.');
EXIT WHEN i = v_max;
i := i + 1;
END LOOP;
END;

//4 (era deja sters)


DELETE FROM angajati
WHERE id_angajat = 150;

// 5
SELECT USER AS nume, SYSDATE AS data FROM dual;

// 6 FOR
DECLARE
v_nume angajati.nume%TYPE;
v_sal angajati.salariul%TYPE;
v_vechime NUMBER(10, 2);
v_min NUMBER;
v_max NUMBER;
v_nr NUMBER;
i NUMBER;
BEGIN
SELECT MIN(id_angajat), MAX(id_angajat) INTO v_min, v_max
FROM angajati;

FOR i IN v_min..v_max LOOP


SELECT COUNT(id_angajat) INTO v_nr
FROM angajati
WHERE id_angajat = i;

IF v_nr = 0
THEN
DBMS_OUTPUT.PUT_LINE('Nu exista');
ELSE
SELECT nume, salariul, (SYSDATE-data_angajare)/365
INTO v_nume, v_sal, v_vechime
FROM angajati WHERE id_angajat = i;
DBMS_OUTPUT.PUT_LINE('Angajatul ' || v_nume || ' are salariul ' || v_sal || ' si
vechimea de ' || v_vechime || ' ani.');
END IF;
END LOOP;
END;

// 6 WHILE
DECLARE
v_nume angajati.nume%TYPE;
v_sal angajati.salariul%TYPE;
v_vechime NUMBER(10, 2);
v_min NUMBER;
v_max NUMBER;
v_nr NUMBER;
i NUMBER;
BEGIN
SELECT MIN(id_angajat), MAX(id_angajat) INTO v_min, v_max
FROM angajati;

i := v_min;
WHILE i < v_max LOOP
SELECT COUNT(id_angajat) INTO v_nr
FROM angajati
WHERE id_angajat = i;

IF v_nr = 0
THEN
DBMS_OUTPUT.PUT_LINE('Nu exista');
ELSE
SELECT nume, salariul, (SYSDATE-data_angajare)/365
INTO v_nume, v_sal, v_vechime
FROM angajati WHERE id_angajat = i;
DBMS_OUTPUT.PUT_LINE('Angajatul ' || v_nume || ' are salariul ' || v_sal || ' si
vechimea de ' || v_vechime || ' ani.');
END IF;

i := i + 1;
END LOOP;
END;

// 6 EXIT WHEN
DECLARE
v_nume angajati.nume%TYPE;
v_sal angajati.salariul%TYPE;
v_vechime NUMBER(10, 2);
v_min NUMBER;
v_max NUMBER;
v_nr NUMBER;
i NUMBER;
BEGIN
SELECT MIN(id_angajat), MAX(id_angajat) INTO v_min, v_max
FROM angajati;

i := v_min;
LOOP
SELECT COUNT(id_angajat) INTO v_nr
FROM angajati
WHERE id_angajat = i;

IF v_nr = 0
THEN
DBMS_OUTPUT.PUT_LINE('Nu exista');
ELSE
SELECT nume, salariul, (SYSDATE-data_angajare)/365
INTO v_nume, v_sal, v_vechime
FROM angajati WHERE id_angajat = i;
DBMS_OUTPUT.PUT_LINE('Angajatul ' || v_nume || ' are salariul ' || v_sal || ' si
vechimea de ' || v_vechime || ' ani.');
END IF;

EXIT WHEN i = v_max;


i := i + 1;
END LOOP;
END;

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

  • Continuare Proiect SGBD
    Continuare Proiect SGBD
    Document15 pagini
    Continuare Proiect SGBD
    Nitu Mihai
    Încă nu există evaluări
  • SGBDseminar 5
    SGBDseminar 5
    Document6 pagini
    SGBDseminar 5
    Melisa Musledin
    Încă nu există evaluări
  • SGBD Seminar
    SGBD Seminar
    Document4 pagini
    SGBD Seminar
    Dariusu'
    Încă nu există evaluări
  • Proiect SGBD CSIE
    Proiect SGBD CSIE
    Document17 pagini
    Proiect SGBD CSIE
    Raluca
    Încă nu există evaluări
  • Create Database Firma
    Create Database Firma
    Document11 pagini
    Create Database Firma
    Andrei Gee
    Încă nu există evaluări
  • Curs 14
    Curs 14
    Document13 pagini
    Curs 14
    Maria Rusu
    Încă nu există evaluări
  • Laborator 11
    Laborator 11
    Document6 pagini
    Laborator 11
    Gheorghe Elena
    Încă nu există evaluări
  • Exercitiisem
    Exercitiisem
    Document5 pagini
    Exercitiisem
    stoicaalexandru22
    Încă nu există evaluări
  • Seminar 7-Exercitii II - Cu Rez
    Seminar 7-Exercitii II - Cu Rez
    Document2 pagini
    Seminar 7-Exercitii II - Cu Rez
    CristinaRăileanu
    Încă nu există evaluări
  • SGBD Proiect
    SGBD Proiect
    Document21 pagini
    SGBD Proiect
    Radu Negreanu
    Încă nu există evaluări
  • BDseminar12 REZOLVAT
    BDseminar12 REZOLVAT
    Document3 pagini
    BDseminar12 REZOLVAT
    Stefania
    67% (3)
  • Lab 4
    Lab 4
    Document1 pagină
    Lab 4
    Iustin Ivan
    Încă nu există evaluări
  • Ex SGBD
    Ex SGBD
    Document5 pagini
    Ex SGBD
    Antonela Popa
    Încă nu există evaluări
  • SEMINAR 9 SGBD
    SEMINAR 9 SGBD
    Document5 pagini
    SEMINAR 9 SGBD
    Antonela Popa
    Încă nu există evaluări
  • Lab3 BD2
    Lab3 BD2
    Document10 pagini
    Lab3 BD2
    Eliza Caraman
    Încă nu există evaluări
  • Exemple
    Exemple
    Document3 pagini
    Exemple
    Rotari Constantin
    Încă nu există evaluări
  • Seminar 7-Exercitii II - Cu Rez
    Seminar 7-Exercitii II - Cu Rez
    Document2 pagini
    Seminar 7-Exercitii II - Cu Rez
    Pepene Mihai Alin
    Încă nu există evaluări
  • Ex Laborator
    Ex Laborator
    Document11 pagini
    Ex Laborator
    Daniel Daniel
    Încă nu există evaluări
  • Laborator PLSQL 7
    Laborator PLSQL 7
    Document10 pagini
    Laborator PLSQL 7
    Vladut Alina
    Încă nu există evaluări
  • BD Lab2
    BD Lab2
    Document4 pagini
    BD Lab2
    Cosmin
    Încă nu există evaluări
  • Proiect SGBD Oracle
    Proiect SGBD Oracle
    Document10 pagini
    Proiect SGBD Oracle
    Georgecraciun
    Încă nu există evaluări
  • BD Lab4
    BD Lab4
    Document4 pagini
    BD Lab4
    Cosmin
    Încă nu există evaluări
  • Tema 2-BD
    Tema 2-BD
    Document9 pagini
    Tema 2-BD
    Georgiana Mangiru
    Încă nu există evaluări
  • Poo Baltoi
    Poo Baltoi
    Document20 pagini
    Poo Baltoi
    AndreeaPopescu
    Încă nu există evaluări
  • PL-SQL (Procedural Language - Structured Query Language) - 3
    PL-SQL (Procedural Language - Structured Query Language) - 3
    Document10 pagini
    PL-SQL (Procedural Language - Structured Query Language) - 3
    alex
    Încă nu există evaluări
  • 44 Grile SGBD-noi
    44 Grile SGBD-noi
    Document21 pagini
    44 Grile SGBD-noi
    aramis4741111
    100% (2)
  • Lab 4
    Lab 4
    Document6 pagini
    Lab 4
    Cristi Teodorescu
    Încă nu există evaluări
  • Lab5 Rezolvare
    Lab5 Rezolvare
    Document3 pagini
    Lab5 Rezolvare
    Cosmin
    Încă nu există evaluări
  • Proiect Baze de Date
    Proiect Baze de Date
    Document29 pagini
    Proiect Baze de Date
    Claudia Antal-Vaida
    Încă nu există evaluări
  • l3 Ex
    l3 Ex
    Document3 pagini
    l3 Ex
    Cosmin
    Încă nu există evaluări
  • Proiect SGBD Gestionarea Unei Baze de Date in Domeniul Hotelier
    Proiect SGBD Gestionarea Unei Baze de Date in Domeniul Hotelier
    Document24 pagini
    Proiect SGBD Gestionarea Unei Baze de Date in Domeniul Hotelier
    Amalia Sirbu
    Încă nu există evaluări
  • Seminar 3 - LMD - Rez
    Seminar 3 - LMD - Rez
    Document5 pagini
    Seminar 3 - LMD - Rez
    Alexandra-Cristina GRIGORE
    Încă nu există evaluări
  • Simulare
    Simulare
    Document8 pagini
    Simulare
    Liviu Ionut
    Încă nu există evaluări
  • Laborator SQL 5 - Partea 2 PDF
    Laborator SQL 5 - Partea 2 PDF
    Document6 pagini
    Laborator SQL 5 - Partea 2 PDF
    Bogdan-Mihai Tabacu
    Încă nu există evaluări
  • Laborator3 PLSQL An3
    Laborator3 PLSQL An3
    Document9 pagini
    Laborator3 PLSQL An3
    Procopie Gabi
    Încă nu există evaluări
  • Baze de Date Anul III Sem I
    Baze de Date Anul III Sem I
    Document337 pagini
    Baze de Date Anul III Sem I
    Lazar Adrian
    Încă nu există evaluări
  • Angajati, Departamente
    Angajati, Departamente
    Document2 pagini
    Angajati, Departamente
    Andreea Ionela
    Încă nu există evaluări
  • Blocuri Anonime În PL-SQL
    Blocuri Anonime În PL-SQL
    Document5 pagini
    Blocuri Anonime În PL-SQL
    Calin Mihesan
    Încă nu există evaluări
  • Laborator PLSQL 1
    Laborator PLSQL 1
    Document10 pagini
    Laborator PLSQL 1
    Irina Ursateanu
    0% (1)
  • Exercitii Proceduri
    Exercitii Proceduri
    Document3 pagini
    Exercitii Proceduri
    larisa lepadatu
    Încă nu există evaluări
  • Lab 09
    Lab 09
    Document5 pagini
    Lab 09
    Supremusx
    Încă nu există evaluări
  • Doc
    Doc
    Document1 pagină
    Doc
    Andrei Gee
    Încă nu există evaluări
  • Exemple de Fraze SQL
    Exemple de Fraze SQL
    Document5 pagini
    Exemple de Fraze SQL
    Mihaela Voican
    Încă nu există evaluări
  • Tema Curs-Baze de Date
    Tema Curs-Baze de Date
    Document3 pagini
    Tema Curs-Baze de Date
    ÏøĄńĄ
    Încă nu există evaluări
  • Laborator4 PLSQL An3
    Laborator4 PLSQL An3
    Document10 pagini
    Laborator4 PLSQL An3
    Procopie Gabi
    Încă nu există evaluări
  • Test
    Test
    Document11 pagini
    Test
    Sergiu Merticariu
    Încă nu există evaluări