Anda di halaman 1dari 1

DROP TABLE personal;

CREATE TABLE personal


(persnr NUMBER(6,0),
vorname VARCHAR2(20),
nachname VARCHAR2(25),
gehalt NUMBER(8,2),
chefnr NUMBER(6,0));

INSERT INTO personal SELECT employee_id, first_name, last_name, salary, manager_id FROM employees;

SELECT * FROM personal ORDER BY 1;

DECLARE
v_persnr personal.persnr%TYPE;
v_myfirstname CONSTANT VARCHAR2(20) := 'Wen Chao';
v_mylastname CONSTANT VARCHAR2(20) := 'Chen';
v_chefnrcount NUMBER(4,0);
v_nochefname VARCHAR2(50);
v_newchefnr personal.chefnr%TYPE;
v_gehaltsum personal.gehalt%TYPE;
v_lesswage NUMBER(4,0);

BEGIN
FOR i IN 1 .. 3 LOOP
SELECT MAX(persnr) INTO v_persnr FROM personal;
v_persnr := v_persnr + 1;
INSERT INTO personal(persnr, vorname, nachname) VALUES(v_persnr, v_myfirstname, v_mylastname);
END LOOP;

SELECT COUNT(*) INTO v_chefnrcount FROM personal WHERE chefnr IS NULL;


DBMS_OUTPUT.PUT_LINE('Anzahl der Personen ohne Chef: ' || v_chefnrcount);

IF v_chefnrcount = 1 THEN
SELECT nachname INTO v_nochefname FROM personal WHERE chefnr = NULL;
DBMS_OUTPUT.PUT_LINE('Mitarbeiter' || v_nochefname || 'hat keinen Chef');
ELSIF v_chefnrcount > 1 THEN
DBMS_OUTPUT.PUT_LINE('zuviele Chefs');
ELSE DBMS_OUTPUT.PUT_LINE('nur Mitarbeiter ohne Chef');
END IF;

SELECT MAX(persnr) INTO v_newchefnr FROM personal;


UPDATE personal SET chefnr = v_newchefnr WHERE chefnr IS NULL;

SELECT SUM(gehalt) INTO v_gehaltsum FROM personal WHERE chefnr = v_newchefnr;


DBMS_OUTPUT.PUT_LINE('Summe aller Gehälter mit der neuen Personalnummer: ' || v_gehaltsum);

SAVEPOINT sp1;

UPDATE personal SET gehalt = 1000 WHERE chefnr = v_newchefnr;

SELECT SUM(gehalt) INTO v_gehaltsum FROM personal WHERE chefnr = v_newchefnr;


DBMS_OUTPUT.PUT_LINE('Summe aller Gehälter nach der ƒnderung: ' || v_gehaltsum);

ROLLBACK to sp1;

DBMS_OUTPUT.PUT_LINE('Summe aller Gehälter nach dem ROLLBACK: ' || v_gehaltsum);

SELECT COUNT(gehalt) INTO v_lesswage FROM personal WHERE gehalt < 5000;
DBMS_OUTPUT.PUT_LINE('Anzahl der Personen, die weniger als 5000 verdienen: ' || v_lesswage);

DELETE FROM personal WHERE gehalt < 5000;


DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT || ' rows deleted.');

COMMIT;
END;

Anda mungkin juga menyukai