[firebase-br] where com lista de valores

Denis Pereira Raymundo denistek em bol.com.br
Seg Jun 7 07:35:24 -03 2010


1) O Firebird tem limite de comando SQL em 64 kb. E de listas em 1500 
elementos.

2) Se existir alguma condição de seleção dos registros, é preferível usá-la.

3) Se o usuário precisar marcar todos os registros, então não deveria fazer 
o filtro.

4) Se precisar marcar tudo para desmarcar alguns, trabalhe com o inverso. 
NOT IN

5) Pode-se sempre pensar em resumir os códigos eliminando os intervalos. Ex: 
between 1 and 50  or between 100 and 150...

6) Ou quebrar a lista 1500. Ex: codigo in (1, 2, 3,...1500) or codigo in 
(1501, 1502, ....)

7) Uma outra solução que resolveria o problema, seria você gravar
temporariamente em uma tabela do firebird tudo o que ele seleciona e depois
fazer uma cláusula JOIN comum, com essa tabela. Essa tabela nem precisa
efetivar commit, pois será sempre usada pela mesma transação do usuário.

Espero ter contribuído.

Denis Pereira Raymundo


"Carlos Wilson" <cwfsa1 em gmail.com> escreveu na 
mensagem news:4C09A529.4080002 em gmail.com...
Boa noite,

Estou fazendo um select com base nos valores de outro Dataset. Fiz um
while para buscar os valores do dataset e acrescentar uma lista de
valores para ser usada em conjunto com "where in". porém o comando "in"
possui um limite de valores que pode ser passado. existe uma alternativa
ao comando in?

Obrigado,

Carlos Wilson
Delphi+MDO+Firebird 2.1 







Mais detalhes sobre a lista de discussão lista