Postgresql - Функция получить строку в качестве параметра - Как получить доступ к столбцу этой строки? - PullRequest
0 голосов
/ 08 июня 2019

У меня есть функция, которая должна получить в качестве параметра параметр строки сотрудника таблицы и вернуть возраст сотрудника, переданный в качестве параметра:

CREATE OR REPLACE FUNCTION getAge(employe employee) RETURNS int AS $$
begin
  return employe.age;
END; $$
LANGUAGE PLPGSQL;

Я пытаюсь вызвать функцию как

select * from getAge('(1, Alexander, 34, null)' );

Но это не работает. Я ожидаю, что функция вернет 34. Как мне правильно вызвать функцию?

1 Ответ

1 голос
/ 08 июня 2019

Я предполагаю, что ваша таблица сотрудников выглядит примерно так:

knayak=# \d employee
              Table "public.employee"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 id     | integer |           |          |
 name   | text    |           |          |
 age    | integer |           |          |
 col4   | text    |           |          |

Просто назовите ее как

select getAge ('(1,Alexander,34,null)');
 getage
--------
     34

Или используйте в качестве входных данных псевдоним таблицы из запроса.

select getage(emp)
from employee as emp
where e.id = 1;

select * from func() используется для SET/TABLE возвращаемых функций.

DEMO

...