Autor: Artur Kręgiel
Prowadząca: mgr inż. Weronika Węgier
Napisz program drukujący napis "Hello world!"
set serveroutput on size 30000;
begin
dbms_output.put_line('Hello, World!');
end;
Wyświetl średnią geometryczną maksymalnych i minimalnych zarobków w firmie. Skorzystaj z zapytania z select into.
set serveroutput on size 30000;
declare
avgSalary number;
begin
select sqrt(max(salary) * min(salary)) into avgSalary
from employees;
dbms_output.put_line('Średnia geometryczna maksymalnych i minimalnych zarobów w firmie: ' || avgSalary);
end;
Napisz funkcję wyliczającą średnią geometryczną dwóch liczb. Wykorzystaj ją w poprzednim zadaniu.
create or replace function geometric_mean(a in number, b in number)
return number is
mean number;
begin
mean := sqrt(a * b);
return mean;
end;
set serveroutput on size 30000;
declare
maxSalary number;
minSalary number;
avgSalary number;
begin
select max(salary), min(salary) into maxSalary, minSalary
from employees;
avgsalary := geometric_mean(maxsalary, minsalary);
dbms_output.put_line('Średnia geometryczna maksymalnych i minimalnych zarobów w firmie: ' || avgSalary);
end;
Wyświetl zarobki podanego (imię oraz nazwisko) przez użytkownika pracownika. W przypadku jeśli pracownik nie zostanie znaleziony w bazie, to wyświetl o tym informację.
set serveroutput on size 30000;
declare
emplSalary number;
begin
select salary into emplSalary
from employees
where first_name = '&first_name'
and last_name = '&last_name';
dbms_output.put_line(emplSalary);
exception
when no_data_found then
dbms_output.put_line('No such employee');
when others then
dbms_output.put_line('Error');
end;
Napisz procedurę, która dla zadanej liczby (a) będzie wypisywała wszystkie liczby aż do jej dwukrotności(2*a), wraz z informacją, czy liczba jest większa, mniejsza, czy równa a.
create or replace procedure print_numbers(a in number) as
begin
for i in 0..2*a loop
if i < a then
dbms_output.put_line(i || ' jest mniejsze od ' || a);
elsif i > a then
dbms_output.put_line(i || ' jest większe od ' || a);
else
dbms_output.put_line(i || ' jest równe ' || a);
end if;
end loop;
end print_numbers;
set serveroutput on size 30000;
execute print_numbers(&a);