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
