[firebase-br] Deveria retornar NULL mas não

Gladiston Santana gladiston em vidy.com.br
Ter Jan 22 08:12:23 -03 2013


Meu tratamento de usar coalesce(sum(x),0) veio quando pulei do FB1.5 para
2.5, depois de algum tempo notei certos erros nas minhas SPs que antes não
ocorria e ao averiguar cheguei a mesma conclusão que tú. Tenho suspeita de
que não era assim em versões anteriores do FB, ou isso ou antes a minha
base tinha a sorte de não receber nulos em expressões.

inte+


Em 21 de janeiro de 2013 14:40, Carlos H. Cantu
<listas em warmboot.com.br>escreveu:

> Corrigindo e completando minha resposta anterior:
>
> Por algum motivo, eu achava que se o select não retornasse nenhum
> registro, então o valor anterior da variável não seria "tocado", mas a
> coisa não é bem assim.
>
> O uso de funções de agregação (SUM, AVG, etc) faz com que o select
> retorne pelo menos um registro (mesmo que seja um registro "null"). [*]
>
> Sendo assim:
>
> val1 = 1;
> select sum(coalesce(numero,0)) from tabela where 1 = 0 into :val1;
> Resulta em val1 = null
>
> mas
>
> val1 = 1;
> select sum(coalesce(numero,0)) from tabela where 1 = 0 into :val1;
> Resulta em val1 = 0
>
> [*] Se o select usar group by, em ambos os casos a variável não seria
> alterada, ex:
>
> val1 = 1;
> select campo, sum(coalesce(numero,0)) from tabela where 1 = 0 group by
> campo
> into :xcampo, :val1;
> Resulta em val1 = 1
>
> []s
> Carlos H. Cantu
> www.FireBase.com.br - www.firebirdnews.org
> www.warmboot.com.br - blog.firebase.com.br
>




Gladiston Santana
Departamento de TI
Grupo Vidy
Tel (11) 4787-3122 ramal 228
Rod. Régis Bittencourt 3360 - Km 272,5
Taboão da Serra - SP - CEP: 06793-000
Visite nosso site: www.vidy.com.br
Visite também : www.expolabor.com.br



Mais detalhes sobre a lista de discussão lista