1. Aufgabe

Erstelle eine Stored Function GEHALT, die zu einem Angestellten (Eingabepara- meter EMPNO) SAL+COMM berechnet und zurückgibt. Teste die Funktion.

Function
create or replace function EMP_GEHALT(empnom in EMP.EMPNO%type)
    return EMP.SAL%type is gehalt EMP.SAL%type;
begin
    select nvl(SAL, 0) + nvl(COMM, 0) into gehalt
        from EMP e where e.EMPNO = empnom;
    return gehalt;
end EMP_GEHALT;
Execute
select EMP_GEHALT(7839) from dual;

2. Aufgabe

Erstelle eine Stored Function DIFF, die die Tagesdifferenz bezüglich des Anstellungsdatums zweier Angestellter (Eingabeparameter 2x EMPNO) ausgibt. Die Ausgabe soll folgende Format haben: …​ 65 Tage vor …​ Teste die Funktion.

Function
create or replace function EMP_DIFF(
    empno1 in EMP.EMPNO%type,
    empno2 in EMP.EMPNO%type)
    return varchar
as
    difference number;
    name1 EMP.ENAME%type;
    name2 EMP.ENAME%type;
begin
    -- get difference in days
    select abs((select HIREDATE from EMP where EMPNO = empno1) -
        (select HIREDATE from EMP where EMPNO = empno2)) into difference
            from dual;
    -- get names
    select ENAME into name1 from EMP where EMPNO = empno1;
    select ENAME into name2 from EMP where EMPNO = empno2;

    return name1 || '    ' || difference || ' Tage vor ' || name2;
end EMP_DIFF;
Execute
select EMP_DIFF(7369, 7499) from dual;