[firebase-br] Select IN

Mantovani daniloatm em gmail.com
Seg Maio 25 15:26:40 -03 2009


Sandro, obrigado pela ajuda,

Seguinte, eu realmente preciso passar com um IN, vou explicar.

Estou desenvolvendo um relatorio onde o usuario poderá selecionar na tela 
quais frotas ele quer imprimir. Meu campo nrofrota é um string. Além do 
problema da qtde de frota que ele pode selecionar, não estou conseguindo 
passar como parametro para o sql varias string para formar o IN, problema 
que eu resolveria se conseguisse jogar tudo em um tabela.

No oracle eu conseguiria resolver o problema como descrevi e que é +- o que 
vc disse, a função retorna tipo uma tabela virtual.

O meu IN, seria +- isso ('A01','A02','B05'...)

Espero ter consiguido explicar.

"Sandro Souza" <escovadordebits em gmail.com> 
escreveu na mensagem 
news:64d5939a0905251110k5510f4act8b200b3829f3405b em mail.gmail.com...
Bom dia/tarde Mantovani.

Grande Mantovani, para essa situação específica, você pode criar uma stored
procedure que lhe retorne uma "tabela virtual" que pode ser utilizada em um
SELECT como você deseja.

Nessa situação de ser um intervalo fechado de valores, você poderia utilizar
o operador BETWEEN, ou seja, o seguinte exemplo:

SELECT  *
FROM     TABELA
WHERE   CAMPO IN (   SELECT COLUMN_VALUE
                                   FROM
TABLE(cast(c5_ComplexIn.c5InTable('1,2,3,4 ATE 10000') as c5InStrTable)))
Poderia se tornar:

SELECT * FROM TABELA WHERE CAMPO BETWEEN 1 AND 10000

Veja se você pode utilizar operadores simples para filtrar. Caso necessite
realmente de uma stored procedure para isso, então posso lhe ajudar se você
especificar o que você informará e o que deseja que seja retornado.

Espero ter ajudado mais que atrapalhado. :D

2009/5/25 Mantovani <daniloatm em gmail.com>

> Boa tarde Pessoal,
>
> Já fiz essa pergunta anteriormente, mas não obtive resposta. Acho q como
> estava no topido do Jhosef Marks muitos não viram.
>
> Bom, vamos lá, gostaria de saber se existe algum limite com relação
> a qtde de informações dentro de um IN. Ex  IN (1,2,3,4 ATÉ 10000). No
> Oracle
> se não me engano, existe uma limitação, então eu tenho uma UDF, que pega o
> conteudo dentro do parentes e insere em uma tabela temporaria.
>
> Exemplo Oracle:
> SELECT  *
> FROM     TABELA
> WHERE   CAMPO IN (   SELECT COLUMN_VALUE
>                                    FROM
> TABLE(cast(c5_ComplexIn.c5InTable('1,2,3,4 ATE 10000') as c5InStrTable)))
>
> Gostaria de saber como tratar isto no firebird, se ja existe alguma udf
> para
> fazer isso. Estou usando firebird 2.5.
>
> Desde já Agradeço.
> Mantovani.
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa







Mais detalhes sobre a lista de discussão lista