Vasulio-crtVasulio-crt
FoxelyssFoxelyss
Время чтения: 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)