Все базы данных в одной репе
This commit is contained in:
67
procedure.sql
Normal file
67
procedure.sql
Normal 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;
|
||||
$$;
|
||||
Reference in New Issue
Block a user