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;