Rafael
Boa tarde.

Mesmo assim não funcionou veja as mensagens que obtive ao executar um
simples teste no pgadmin.

ERRO:  função fc_iff(boolean, character varying, character varying) não
existe
LINE 1: select fc_iff((2+2=4)::boolean,'Verdadeiro'::varchar,
'Falso'::varchar)
               ^
HINT:  Nenhuma função corresponde com o nome e os tipos de argumentos
informados. Você precisa adicionar conversões de tipo explícitas.
********** Error **********

ERRO: função fc_iff(boolean, character varying, character varying) não
existe
SQL state: 42883
Hint: Nenhuma função corresponde com o nome e os tipos de argumentos
informados. Você precisa adicionar conversões de tipo explícitas.
Character: 8

Realmente não consegui entender...

Em 21 de abril de 2014 14:09, Rafael Fialho Corrêa
<[email protected]>escreveu:

> Em 21 de abril de 2014 13:59, André Geraldo dos Santos <
> [email protected]> escreveu:
>
> Caros
>> Boa tarde.
>>
>> Estava em busca de uma função para operação ternária e encontrei o
>> exemplo abaixo no link a seguir
>> http://postgresql.1045698.n5.nabble.com/Operador-quot-quot-td2044065.html
>>
>> create or replace function fc_iif(boolean, anyelement, anyelement)
>> returns anyelement as
>> $$
>>   select case when $1 is true then $2 else $3 end;
>> $$
>> language 'sql';
>>
>> Exemplo de uso: select fc_iif( (tipopessoa='F'), 'FISICA', 'JURIDICA' )
>> from pessoa
>>
>> Ao testar a função com o exemplo sugerido pelo autor, recebo a mensagem
>> "Nenhuma função corresponde com o nome e os tipos de argumentos informados.
>> Você precisa adicionar conversões de tipo explícitas."
>>
>> Estou utilizando a versão 9.3 do PG e ainda não consegui entender porque
>> do não funcionamento com tipos polimórficos.
>>
>> O Post é de 2009 e talvez na época o PG permitia esse tipo de função,
>> fato é que a função é bem simples e a utilização da mesma deixa o sql mais
>> legível.
>>
>> Aguardo possíveis considerações dos colegas.
>>
>
> A versão deveria ser abaixo da 8.3, onde todos os tipos eram convertidos
> de qualquer coisa pra qualquer coisa e zas..
> Tente desta forma, definindo um tipo para os seus parâmetros:
>
> "select fc_iif((tipopessoa='F'), 'FISICA'::varchar, 'JURIDICA'::varchar)
> from pessoa "
>
> Assim provavelmente irá funcionar.
>
> []'s
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 

Atenciosamente,

André Geraldo dos Santos
Certified Delphi® Developer XE2
Analista Desenvolvedor e Consultor
Belo Horizonte / Minas Gerais
E-mail:[email protected]
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a