[firebase-br] Erro - Positive Numeric value required - AGORA COM SELECT COMPLETO
eduardo
eduardo em icontroller.com.br
Seg Jul 25 16:09:57 -03 2005
Oi Jean
> Como são vários select's que apresentam esse problema, segue um deles pra demonstração.
> Ah...detalhe...às vezes o problema não ocorre.
Com a mesma querie? Você diz intermitente?
Vi em seus posts anteriores que vc já fez backup/restore.
A fbclient da estação é a mesma versão do servidor?
Em uma mesma estação acontece esta intermitência, ou ocorre em uma
estação e em outra não?
> Segue:
>
>
> SELECT COUNT(*) AS NR, A.*, B.NOME,C.DESCRICAO, D.VLPAGO, D.DTMOVIMENTO
> FROM RELCRITICA A
> INNER JOIN BANCO B ON(A.BANCO = B.BANCO
Aqui falta um parentese. (A.BANCO = B.BANCO) - mas isto resultaria outro
erro e não o que você relata.
> INNER JOIN CRITICA C ON (A.CODCRITICA = C.CODCRITICA)
> INNER JOIN BXLOTE D ON (A.BANCO = D.BANCO AND A.LOTE = D.LOTE AND A.SEQUENCIA = D.SEQUENCIA)
> WHERE A.DATA BETWEEN :DATA1 AND :DATA2
> GROUP BY A.BANCO, A.LOTE, A.SEQUENCIA, A.DOCUMENTO, A.CODCRITICA,
> A.DATA, B.NOME, C.DESCRICAO, D.VLPAGO, D.DTMOVIMENTO
Não sabia que se podia colocar A.* e se mandar agrupar pelos campos de
A.*. Eu colocaria
SELECT COUNT(*) AS NR, A.BANCO, A.LOTE, A.SEQUENCIA, A.DOCUMENTO,
A.CODCRITICA, A.DATA, ...
> ORDER BY A.LOTE,C.CODCRITICA,A.BANCO, A.SEQUENCIA, A.DATA
C.CODCRITICA não está no Result Set. Como há um join em
A.CODCRITICA=C.CODCRITICA, seria melhor ordenar por A.CODCRITICA para
facilitar o serviço do banco. Melhor ainda, em resultados agregados,
seria melhor o ORDER BY 1,2,3,4...
Outra questão com agregados e ORDER BY é que se você montar o SELECT na
ordem que você está agrupando, não precisa ordenar.
Nunca obtive o erro "Positive Numeric Value Required", mas, pelo texto,
verificaria se os campos de JOIN são do mesmo tipo, ou em uma tabela é
INTEGER e em outra CHAR, por exemplo.
Como uma crítica construtiva, procure evitar o .*
Isto dá mais trabalho para o Banco e tudo que pudermos fazer para ele
trabalhar menos resulta em ganho de performance.
[]s Eduardo
Mais detalhes sobre a lista de discussão lista