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 по дате отправления: