Oi Coutinho,
Ok, e como faz essa funcao? Alias, eu queria uma funcao mais ou menos assim:
Que ela recebesse algo do tipo 1 + 1 ou entao 8 / '2' ou entao 1 *
'artz' ou ainda 5 / 0
e ela retornasse para cada uma das entradas 2, 4, nulo e nulo.
Na primeira ele executava a conta e dava o retorno, na segunda idem, na
terceira daria erro pq nao eh numero e retornaria nulo e na quarta daria
erro devido a divisao por zero e retornaria tbm nulo.
Isso eh possivel???
1 + 1 = 2
8 / '2' = 4
1 * 'artz' = null
5 / 0 = null
obrigado,
artz
>> O que eu quero fazer eh que das duas uma:
>> - ou antes de fazer a soma, ele teste para checar se as variaveis sao
>> numericas e se nao forem retorne nulo;
>> - ou que ele faca a soma e caso ela de erro retorne nulo, caso
>> contrario retorne o valor da soma.
>>
>> Quero que aconteca isso pq os outros valores da tabela que nao forem
>> texto ou nulos devem passa pela formula e mostrar o resultado.
>> Nao sei se me fiz entender, mas eh isso. Ateh imaginei que poderia ser
>> feito assim, baseado em dicas dos colegas que me enviaram:
>>
>> SELECT CASE WHEN funcaoteste(tab01.V01 + tab02.V04)=1 THEN tab01.V01 +
>> tab02.V04 ELSE null AS vx, a_bjaguaribe_mu.codigo AS id,
>> a_bjaguaribe_mu.first_nome AS legenda
>> FROM tab01, tab02, a_bjaguaribe_mu
>> WHERE a_bjaguaribe_mu.codigo=tab01.codigo AND
>> a_bjaguaribe_mu.codigo=tab02.codigo
>>
>> Onde funcaoteste retornaria 1 caso a soma desse certo e qualquer outra
>> coisa caso contrario.
>>
> nao sei se alguem tem alguma ideia melhor, no momemtno nao me vem
> outra coisa a cabeca a nao ser uma funcaozinha com tratamento de
> excecao, onde tenta fazerum cast do valor se der erro retorna null
>
> ai fica mais facil o select inclusive pq quando vc chamar a funcao vc
> passa o campo e ela retorna o valor inteiro para vc usar na soma ou
> retorna 0 por exemplo assim ficaria assim veja
>
> select get_value(v1) + get_value(v2) from test;
>
> na get_value eh so sar tratamento de escessao para tentar fazer isso:
>
> return cast($1 as integer);
>
> se der erro
>
> return 0;
>
> assim se v1 for 1 e v2 for 4 o resultado eh 5
> se v1 for 1 e v2 for 'coutinho' o resultado eh 1;
>
>
>
_______________________________________________________
Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular.
Registre seu aparelho agora!
http://br.mobile.yahoo.com/mailalertas/
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios