Sunday, September 7, 2008

Re: [pgsql-es-ayuda] Implementar IIf

Jaime Casanova escribió:

> la funcion iif en plsql es bastante simple:
>
> create function iif(boolean, int, int) returns int as$$
> select case $1 when true then $2 else $3 end;
> $$ language sql;

Esta definicion asume que los valores a retornar son enteros ... mejor
asi:

create function iif(boolean, anyelement, anyelement) returns int as$$
select case $1 when true then $2 else $3 end;
$$ language sql;

Eso debería funcionar para cualquier tipo escalar; no va a funcionar
para arrays. Quizás esto funcione:

create function iif(boolean, any, any) returns int as$$
select case $1 when true then $2 else $3 end;
$$ language sql;

pero no estoy seguro. En el peor de los casos podrías definir dos
funciones, una que sea (bool, anyelement, anyelement) y otra que sea
(bool, anyarray, anyarray). (Habría que ver que hacer con los enums)

--
Alvaro Herrera http://www.amazon.com/gp/registry/5ZYLFMCVHXC
"If it wasn't for my companion, I believe I'd be having
the time of my life" (John Dunbar)
--
TIP 2: puedes desuscribirte de todas las listas simultáneamente
(envía "unregister TuDirecciónDeCorreo" a majordomo@postgresql.org)

No comments: