Функция возвращает несколько столбцов как один столбец вместо нескольких столбцов
В настоящее время я пишу функцию в postgresql 9.04, где я пытаюсь использовать переменную, которая будет использоваться в выражении select, а затем вернет результаты.
Утверждение, которое я придумал, прост и работает; однако все столбцы выводятся в один столбец вместо нескольких столбцов.
вот моя функция:
create or replace function foo(IN pID integer, OUT project_id integer, OUT project_name text, OUT project_type text, OUT project_description text, OUT project_status text)
returns setof record as
$$
select project_id, project_name, project_type, project_description, project_status from t_projects
where project_id = $1;
$$
LANGUAGE SQL;
select foo(6) -- runs function
текущий вывод выглядит следующим образом:
"(6,"test project","inbound","inbound test","processing")"
как я могу это сделать, чтобы результаты не были объединены вместе и каждый раз возвращали каждый элемент столбца?
благодарим вас заранее.
Ответы
Ответ 1
вам нужно вызвать функцию следующим образом:
select * from foo(6);
который вернет что-то вроде этого:
project_id | project_name | project_type | project_description | project_status
-----------|--------------|--------------|---------------------|----------------
6 | test project | inbound | inbound test | processing
это причуда postgres, которую можно назвать двумя способами и дать вам результат. вы можете захотеть еще раз проверить документы на функции набора возвращаемых функций, есть и другие способы сделать это. О, там есть страница wiki, написанная для plpgsql, но большинство относится и к функциям sql: http://wiki.postgresql.org/wiki/Return_more_than_one_row_of_data_from_PL/pgSQL_functions