Re: right way of using case-expressions in plpgsql functions

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Victor Dobrovolsky <booby(dot)stager(at)gmail(dot)com>
Cc: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, "pgsql-general(at)lists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: right way of using case-expressions in plpgsql functions
Date: 2023-10-15 21:15:41
Message-ID: 2124262.1697404541@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Victor Dobrovolsky <booby(dot)stager(at)gmail(dot)com> writes:
> From that - "short and dirty translation" - point of view - should I prefer
> to divide that
> $$
> Select
> case $1
> when '1'::numeric then tbl.p1
> when '2'::numeric then tbl.p2
> ...
> end as cresult
> $$

> expression into:
> $$
> ...
> if $1 = '1'::numeric then (query_1)
> elsif when '2'::numeric then (query_2)
> ...
> end if;
> ...
> $$

Yeah, that would probably be a preferable approach if you're hoping
for significantly different query plans for the two cases. PG does
not have the sort of run-time plan choice mechanism that you're
describing for Oracle.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Victor Dobrovolsky 2023-10-15 21:53:14 Re: right way of using case-expressions in plpgsql functions
Previous Message Ron 2023-10-15 21:14:00 Re: right way of using case-expressions in plpgsql functions