Время чтения: 1 min
Изменено:18.09.2026, 19:57:57
Процедуры
Это подпрограмма, которая выполняет последовательно команды, но не выдаёт данные (только исполняет).
Можно использовать операторы транзакции; процедуры используются для администрирования, миграции, массового обновления данных.
Общий вид:
create procedure ИНДФ (лок_пер тип_дан, ...)
as $$
Begin
- тело
End; language plpgsql;
Пример:
Create or replace procedure gr632_p1()
as $$
Begin
Update gr633 set Отчество='Нет отчества'
Where Отчество is null;
End;
$$ language plpgsql;
-- call для выполнения процедуры
Call gr632_p1();
Select * from gr632
Create or replace procedure удаления_повторов_gr632()
as $$
Begin
delete from s
where spj.номер_поставщиков not in (select distinct spj.номер_поставщика from spj);
End;
$$ language plpgsql;
Call удаления_повторов_gr632()
Create or replace procedure gr632_p2 (in fam varchar, in рейтинг int, город varchar)
as $$
Begin
insert into s
Values (select distinct spj.номер_поставщика from spj
where spj.номер_поставщиков not in (select distinct s.номер_поставщика from s)), fam, 15, город);
End; $$ language plpgsql;
Call gr632_p2('имя', 0, 'не известен')
Create or replace procedure gr632_p3(inout a int)
as $$
Begin
a = a * a;
End;$$
language plpgsql;
call gr632_p3(3)