2012-02-22 61 views
1

我编写了一个函数来返回一组记录(RETURNS SETOF),使用return next。排序函数返回的setof记录

有没有办法在返回之前对结果集进行排序?像访问集合的引用,对其进行排序,然后返回。 我已经在某些查询中使用了顺序,但是我需要编写额外的代码来对结果进行排序。

作为一种变通方法我打电话的功能是这样的:

select * from (select * from myfunction()) d 
order by d.whatever,d.othercolumn 

感谢。

回答

1

如果您在下一次返回之前无法订购数据 - 您可以将函数的调用包装到另一个函数中,从所需的顺序中选择数据并返回。

+0

谢谢,我想我会那样做。 – 2012-02-22 19:53:53

+1

注意:如果您在与另一个“真实”表的连接中使用函数的结果集,则查询优化器不能“查看”该顺序(它不能在函数内部查看),因此连接将涉及显式排序步骤+合并或散列查找。 – wildplasser 2012-02-22 20:26:44