Вы указали, что «создаете аргумент IN с теми же (t) ype и именем».Это не совсем то, что вы хотите сделать.Хотя вы хотите, чтобы тип был одинаковым, имя должно отличаться или квалифицироваться по имени функции.Если это то же самое, вы получите все строки, так как предполагаемое имя параметра будет интерпретировано как имя столбца;в основном это приводит к:
Select * from table_name where column_name = column_name;
Что верно, когда значение не равно нулю.Теперь есть 2 подхода, использующие ID пользователя и предполагающие его уникальный:
create or replace function get_user(userid_in users.userid%type)
returns setof users
language sql
as $$
select *
from users where userid = userid_in ;
$$;
ИЛИ
create or replace function get_user(userid users.userid%type)
returns setof users
language sql
as $$
select *
from users where userid = get_user.userid ;
$$;