2014-06-25 121 views
2

如何修改现有函数以从表sd_users返回所有行?PostgreSQL函数返回所有记录

CREATE OR REPLACE FUNCTION getusers() 
     RETURNS sd_users AS 
    $BODY$ 
    DECLARE 
     groups sd_users; 
    BEGIN 
     SELECT * INTO groups FROM sd_users; 
     RETURN groups; 

    END; 
    $BODY$ 
     LANGUAGE plpgsql VOLATILE 
     COST 100; 
    ALTER FUNCTION getusers() 
     OWNER TO postgres; 

调用该函数代码:

SELECT getusers() 

此代码只返回第一条记录,如何让它返回所有记录?

回答

3

您正在寻找setof。它可以是普通的SQL而不是plpgsql

create or replace function getusers() 
returns setof sd_users as $body$ 
    select * from sd_users; 
$body$ language sql stable