Время чтения: 2 min
Изменено:18.09.2026, 19:57:57
Переменные
Виды локальных переменных:
in— лок_пер которая указывается для внесения данныхout— лок_пер которая только выводит данные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();