2016-01-11 35 views
2

如何从postgresql函数返回单行?在returns之后应该使用什么类型? 这些是我的代码:postgresql在select语句后从函数返回单行

create or replace function get_perf() 
returns ???? as $$ 
select task_ext_perf.performance, task_ext_perf.unit from task_ext_perf order by task_ext_perf.tm limit 1; 
$$ 
language sql; 
+0

返回“记录”。或者,如果你返回一行表格,你可以直接'返回MyTable'。 – Blackus

回答

2

考虑像这样的表User

User 
------ 
id 
name 

您可以用程序返回表的单行这样的:

CREATE OR REPLACE function get_user() 
RETURNS User AS $$ 
    SELECT id, name 
    FROM User 
    WHERE id = 1 
$$ 
language sql; 

如果你想返回一个更详细的行,你必须返回一个record,与OUT参数。

CREATE FUNCTION get_user(OUT id integer, OUT name character varying, OUT linkedString character varying) 
RETURNS record LANGUAGE sql AS $$ 
SELECT 
    u.id, u.name, ot.string 
FROM Users u 
INNER JOIN OtherTable ot ON ot.user_id = u.id 
WHERE id = 1 
$$; 
+0

我的例子被简化了。我需要从不同的表中返回几个字段,而不仅仅是一个表中的一行。 –

+0

因此,返回一个“记录”。它以同样的方式;) – Blackus

+0

@IrS,我添加了一个返回记录的过程的例子。 – Blackus