Re: plpgsql - sorting result set

Поиск
Список
Период
Сортировка
Искать
От
Bob Gobeille
Тема
Re: plpgsql - sorting result set
Дата
Msg-id
4EE52DA8-E0A8-4D9C-8287-D7775C6523CF@hp.com
Ответ на
Список
Дерево обсуждения
plpgsql - sorting result set Robert Gobeille <bob.gobeille@hp.com>
Re: plpgsql - sorting result set "Merlin Moncure" <mmoncure@gmail.com>
Re: plpgsql - sorting result set Bob Gobeille <bob.gobeille@hp.com>
Re: plpgsql - sorting result set Bob Gobeille <bob.gobeille@hp.com>
Re: plpgsql - sorting result set "Merlin Moncure" <mmoncure@gmail.com>
Re: plpgsql - sorting result set Robert Gobeille <bob.gobeille@hp.com>

On Aug 20, 2008, at 10:11 PM, Gobeille, Robert wrote:

> On Aug 20, 2008, at 7:37 PM, Merlin Moncure wrote:
>
>> On Wed, Aug 20, 2008 at 7:20 PM, Robert Gobeille
>>  wrote:
>>> Is it possible to sort a result set in plpgsql?
>>>
>>> That is, after building up the result set with RETURN NEXT  from
>>> multiple
>>> queries, I'd like to sort the set before returning.
>>>
>>> I'm still using 8.1 if that is an issue.
>>
>> Have you already ruled out:
>>
>> select * from (select * from your_func()) order by something?
>>
>> if so, why?
>> merlin
>
> I've ruled this out because I do multiple queries.  Here is my
> function.  I want to reorder the result set (output table) before
> returning.
>
> CREATE or REPLACE function uploadtree2path(uploadtree_pk_in int)
> returns setof uploadtree as $$
> DECLARE
>   UTrec   uploadtree;
>   UTpk    integer;
>   sql     varchar;
> BEGIN
>
>   UTpk := uploadtree_pk_in;
>
>     WHILE UTpk > 0 LOOP
>       sql := 'select * from uploadtree where uploadtree_pk=' || UTpk;
>       execute sql into UTrec;
>
>       IF ((UTrec.ufile_mode & (1<<28)) = 0) THEN RETURN NEXT UTrec;
> END IF;
>       UTpk := UTrec.parent;
>     END LOOP;
>   RETURN;
> END;
> $$
> LANGUAGE plpgsql;

Merlin,
I just reread what you wrote.  ;-)   Yes, your select * from (select *  
from your_func) would work.  The function caller itself can sort the  
results (outside of postgres).  I could also have a second function  
call the above, sorting the results.  These just seem kludgy.   That's  
why I was wondering if it were possible to  select * from (select *  
from function_return_set) order by.  But I see no way to reference the  
table to be returned.

Thanks,
Bob
В списке pgsql-general по дате отправления
От: Ben
Дата:
Сообщение: Re: Single character bitfields
От: Tom Lane
Дата:
Сообщение: Re: Single character bitfields
FAQ