[pgsql-ayuda] IIF y procedimientos almacenados...

=?iso-8859-1?Q?Jos=E9?= Soares sferac@bo.nettuno.it
Mon, 29 Mar 1999 14:58:08 +0200


--------------C88D5B3462C77CC4E3011D93
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit



Eduardo Noeda ha scritto:

> Hola:
>
> He empezado hace muy poco tiempo con PostgreSQL, y he necesitado algo similar al iif de SQL Server o Access y no lo he encontrado. ¿Hay alguna función que haga algo parecido? Como no lo encontré intenté hacer un procedimiento almacenado, pero no logro que funcione. Hice el código en C y lo introduje en la BD (no dió ningún tipo de error) pero cuando lo uso en una consulta no lo reconoce. ¿Alguien sabe cómo se puede crear una función de este tipo?
> --
> Eduardo Noeda  --  Virtual Software
> enoeda@virtualsw.es
>
> --------- Pie de mensaje -------------------------------------------
> Archivo historico: http://tlali.iztacala.unam.mx/maillist/pgsql-ayuda
> Cancelar inscripcion:
> mail to: majordomo@tlali.iztacala.unam.mx
> text   : cancelacion pgsql-ayuda

Que tal una funcion escrita en plpgsql ?

drop function iif(bool,text,text);
create function iif(bool,text,text) returns text as
'
begin
        IF $1 THEN
            RETURN $2;
        ELSE
            RETURN $3;
        END IF;
 end;
' language 'plpgsql';


ejemplos:

select val, iif(val>100,'es mayor de 100','no es mayor de 100') as cien
from test;
val|cien
---+------------------
  1|no es mayor de 100
101|es mayor de 100
100|no es mayor de 100
150|es mayor de 100
(4 rows)


select iif(2<1,'verdad','mentira');
iif
-------
mentira
(1 row)


Espero que sea esto que estas cercando.

José




--------------C88D5B3462C77CC4E3011D93
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
 

Eduardo Noeda ha scritto:

Hola:

He empezado hace muy poco tiempo con PostgreSQL, y he necesitado algo similar al iif de SQL Server o Access y no lo he encontrado. ¿Hay alguna función que haga algo parecido? Como no lo encontré intenté hacer un procedimiento almacenado, pero no logro que funcione. Hice el código en C y lo introduje en la BD (no dió ningún tipo de error) pero cuando lo uso en una consulta no lo reconoce. ¿Alguien sabe cómo se puede crear una función de este tipo?
--
Eduardo Noeda  --  Virtual Software
enoeda@virtualsw.es

--------- Pie de mensaje -------------------------------------------
Archivo historico: http://tlali.iztacala.unam.mx/maillist/pgsql-ayuda
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : cancelacion pgsql-ayuda

Que tal una funcion escrita en plpgsql ?

drop function iif(bool,text,text);
create function iif(bool,text,text) returns text as
'
begin
        IF $1 THEN
            RETURN $2;
        ELSE
            RETURN $3;
        END IF;
 end;
' language 'plpgsql';
 

ejemplos:

select val, iif(val>100,'es mayor de 100','no es mayor de 100') as cien
from test;
val|cien
---+------------------
  1|no es mayor de 100
101|es mayor de 100
100|no es mayor de 100
150|es mayor de 100
(4 rows)
 

select iif(2<1,'verdad','mentira');
iif
-------
mentira
(1 row)
 

Espero que sea esto que estas cercando.

José
 
 
  --------------C88D5B3462C77CC4E3011D93-- --------- Pie de mensaje ------------------------------------------- Archivo historico: http://tlali.iztacala.unam.mx/maillist/pgsql-ayuda Cancelar inscripcion: mail to: majordomo@tlali.iztacala.unam.mx text : cancelacion pgsql-ayuda