Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: dynamic sorting...


  • From: "Florian G. Pflug" <fgp(at)phlo(dot)org>
  • To: Yavuz Kavus <yavuzkavus(at)gmail(dot)com>
  • Cc: pgsql-general(at)postgresql(dot)org
  • Subject: Re: dynamic sorting...
  • Date: Tue, 20 Jun 2006 14:20:31 +0200
  • Message-id: <4497E80F(dot)8060500(at)phlo(dot)org>

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




Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group