Documente Academic
Documente Profesional
Documente Cultură
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;
// 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;
// 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;
// 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;
// 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;
// 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;
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;