创建返回多行的函数的灵活方法是什么? 我正在开发pg9.4数据库,并且在我的函数中修改SELECT语句中的列数并不罕见。 但是,当我学习了plpgsql时,RETURNS被指定为SETOF。只要SELECT是*或指定查询中所有表的列,这就没问题。
有没有办法告诉RETURNS在SELECT语句中使用SETOF列,或者沿着这些行使用某些东西?我看到了我 可以使用RETURNS TABLE return multiple select,但我希望有更动态的东西。 感谢
CREATE TABLE business
(
retailerid integer NOT NULL,
retailername character varying(250) NOT NULL,
CONSTRAINT pkretailerid PRIMARY KEY (retailerid)
)
WITH ( OIDS=FALSE );
INSERT INTO business(retailerid, retailername)
VALUES(1,'Mc Donalds');
INSERT INTO business(retailerid, retailername)
VALUES(2,'Burger King');
CREATE OR REPLACE FUNCTION getretailers()
RETURNS SETOF business AS
$BODY$
BEGIN
RETURN QUERY
SELECT retailerid, retailername FROM business;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
SELECT getretailers(); -- works
drop function getretailers();
CREATE OR REPLACE FUNCTION getretailers()
RETURNS SETOF business AS
$BODY$
BEGIN
RETURN QUERY
SELECT retailername FROM business;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
SELECT getretailers(); -- err, structure of query does not match return type