Разбор домашнего задания
--Создать функцию на PL/pgSQL, которая принимает на вход целое число и возвращает это число умноженное на 5.
drop function if exists mult_five;
create function mult_five(i integer) returns integer
as $$
begin
return i * 5;
end;
$$
language plpgsql;select mult_five(2);
--Создать функцию, которая возвращает текст 'Вы проснулись до 5 утра', если в момент вызова функции еще нет 5 утра. И текст 'Вы проснулись после 5 утра', если уже 5 утра или позднее.
create function is_early_wake_up() returns varchar(50)
as $$
begin
return case
when current_time > '05:00:00' then 'Вы проснулись после 5 утра'
else 'Вы проснулись до 5 утра'
end;
end;
$$ language plpgsql;
select is_early_wake_up();
select current_time > '05:00:00';
select to_char(now(), 'HH24') >= '05';
--Создать функцию, которая на вход принимает число и в консоль выводит названия всех фильмов, у которых rental_duration равен заданному числу. Функция возвращает 1.
create function find_film_by_rental_duration(rental_duration integer) returns integer
as $$
declare
i record;
begin
for i in
select
f.title
from
film f
where
f.rental_duration = find_film_by_rental_duration.rental_duration
loop
raise notice '%', i.title;
end loop;
return 1;
end;
$$ language plpgsql;
select find_film_by_rental_duration(4);
--Создать функцию, которая на вход принимает строку и в консоль выводит названия всех фильмов, у которых заданная строка является частью названия фильма. Функция возвращает 1.
create function find_film_by_name(n varchar) returns integer
as $$
declare
i record;
begin
for i in
select
f.title
from
film f
where
f.title like '%' || n || '%'
loop
raise notice '%', i.title;
end loop;
return 1;
end;
$$ language plpgsql;
select find_film_by_name('men');