Re: dynamic sorting...

Поиск
Список
Период
Сортировка
От Florian G. Pflug
Тема Re: dynamic sorting...
Дата
Msg-id 4497E80F.8060500@phlo.org
обсуждение исходный текст
Ответ на dynamic sorting...  ("Yavuz Kavus" <yavuzkavus@gmail.com>)
Список pgsql-general
Yavuz Kavus wrote:
> this works fine, however the next doesnt(i couldnt compile it ) :
> CREATE OR REPLACE FUNCTION ftest(_sort_column "varchar", _sort_direction
> "varchar")
>   RETURNS refcursor AS
> $BODY$
> declare
>      _result_set refcursor;
> begin
>      open _result_set for
>     select firstname, lastname from tb_test
>     order by
>     case
>         when _sort_column  ilike 'lastname' then lastname
>         else firstname
>     end
>     case
>         when _sort_direction  ilike 'asc' then asc
>         else desc
>     end;
>      return _result_set;
> end;$BODY$
>   LANGUAGE 'plpgsql';
>
> any suggestions to run it? (except EXECUTE SQLSTRING).
There isn't any other ;-)

The first example works, because you replaced something that
represents a _value_ by a case. But in the second example, you
replaces a _keyword_ by a case, and that won't work.

Even for the first example, using "execute ..." will probably be faster,
at least if tb_test has moderate size. Using "case" in the first example
is bound to confuse the optimizer, and leads potentially bad performance
IMHO.

greetings, Florian Pflug


В списке pgsql-general по дате отправления:

Предыдущее
От: John DeSoi
Дата:
Сообщение: Re: psql for winxp?
Следующее
От: Geoffrey
Дата:
Сообщение: help with error message from perl Pg