Все базы данных в одной репе

This commit is contained in:
2024-10-29 08:23:11 +03:00
parent 71ef9e72b6
commit be4aeb5975
19 changed files with 1093 additions and 0 deletions

67
procedure.sql Normal file
View File

@@ -0,0 +1,67 @@
-- select
-- *
-- from
-- participant_request
-- where
-- name = 'Дмитрий'
-- and surname = 'Малышев'
-- and id_competition = (
-- select id_competition from competition where title = 'Мега кубок №36' limit 1
-- )
create or replace procedure create_participant_request(
p_name varchar(100),
p_surname varchar(100),
p_gender varchar(10),
p_competition_title varchar(100),
p_division_title varchar(100)
)
language plpgsql
as $$
declare
v_id_sportsman integer;
v_id_competition integer;
v_id_division integer;
begin
-- проверка существования дивизиона
select id_division into v_id_division
from division
where title = p_division_title
limit 1;
if not found then
raise exception 'Дивизиона % не существует', p_division_title;
end if;
-- проверка существования соревнования
select id_competition into v_id_competition
from competition
where title = p_competition_title
limit 1;
-- если соревнование не существует, создать его
if not found then
insert into competition (title)
values (p_competition_title)
returning id_competition into v_id_competition;
end if;
-- проверка существования спортсмена
select id_sportsman into v_id_sportsman
from sportsman
where name = p_name and surname = p_surname and gender = p_gender
limit 1;
-- если спортсмен не существует, создать его
if not found then
insert into sportsman (name, surname, gender)
values (p_name, p_surname, p_gender)
returning id_sportsman into v_id_sportsman;
end if;
-- создание заявки участника
insert into participant_request (name, surname, gender, is_registered, id_competition, id_sportsman, id_division)
values (p_name, p_surname, p_gender, false, v_id_competition, v_id_sportsman, v_id_division);
end;
$$;