Vasulio-crtVasulio-crt
FoxelyssFoxelyss
Время чтения: 2 min
Изменено:18.09.2026, 19:57:57

Переменные

Виды локальных переменных:

  1. in — лок_пер которая указывается для внесения данных
  2. out — лок_пер которая только выводит данные
  3. inout — может как вносить данные, так и выводить данные

Note

Если не указать вид, то по дефолту: inout

локальные переменные in и out считаются вводными значениями, которые должны быть указаны непосредственно при вызове либо использоваться в теле функции.

Общий вид:

create function ИНДФ(in ИНДФ тип_дан, in ИНДФ тип_дан,...)
create function ИНДФ(out ИНДФ тип_дан, out ИНДФ тип_дан,...)
create function ИНДФ(in ИНДФ тип_дан, out ИНДФ тип_дан,...)
create function ИНДФ(inout ИНДФ тип_дан,...)

Также out или inout переменные можно использовать вместо returns.

create function gr632_test6(inout ff text)
as $$
select 'Доброе ' || ff;
$$ language sql;

select gr632_test6('Утро')
---------------------------authors: ["foxelyss"]
---
create function gr632_test7(in ff text, out text)
as $$
select 'Доброе ' || ff;
$$ language sql;

select gr632_test7('Утро')

Если используются переменные in и inout, то при вызове функции значения для локальных переменных обязательно должны быть указаны. Если используется переменная out, то при вызове функции локальная переменная не указывается.

Примеры:

create or replace function gr632_test8(in Дата int, in Время int, out a int)
returns int as $$
Begin
	a = Дата + Время;
End;
$$ language sql;

select gr632_test8(200, 100)
create or replace function gr632_test9(out b text)
returns text as $$
Begin
b = (select s.фамалия from s where s.номер_поставщика = 's1');
End;
$$ language plpgsql;
create or replace function gr632_test10(out a date)
returns date as $$
Begin
	a = current_date;
End;
$$ language plpgsql;

select gr632_test10();