SQL.Append(" INNER JOIN SAG_CADPRIATD PRIATV ON PRIATV.IDCPRIATD = CADATV.IDCPRIATD ");
SQL.Append(" INNER JOIN SAG_CADPRIATD PRILOT ON PRILOT.IDCPRIATD = LOT.IDCPRIATD ");
SQL.AppendFormat("WHERE (ORDSVC.IDCLOT IN ( {0} )) ", strIdcLots);
ORA-01795:o número máximo de expressões em lista é de 1000
-
- Rank: Analista Júnior
- Mensagens: 98
- Registrado em: Qua, 24 Set 2008 11:00 pm
- Localização: Belo Horizonte - MG
Bride
OCA Oracle PL/SQL Developer Certified Associate
OCA Oracle PL/SQL Developer Certified Associate
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Realmente há essa limitação de 1000 elementos dentro de um "IN".
Pode-se fazer 2 alternativas.
1- Tratar condicionalmente sua condição limitando os valores (melhor desempenho):
2-Gravar numa tabela os valores que você quer filtrar e fazer um join com seu select principal.
Pode-se fazer 2 alternativas.
1- Tratar condicionalmente sua condição limitando os valores (melhor desempenho):
WHERE (ORDSVC.IDCLOT IN ( a1,a2,...,a998,a999)
OR (ORDSVC.IDCLOT IN ( a1000,a1001,...,a1998,a1999))
-
- Rank: Analista Júnior
- Mensagens: 98
- Registrado em: Qua, 24 Set 2008 11:00 pm
- Localização: Belo Horizonte - MG
Bride
OCA Oracle PL/SQL Developer Certified Associate
OCA Oracle PL/SQL Developer Certified Associate
Noctifero boa tarde, eu fiz um pouco diferente eu peguei a string e montei ela como varios or, vou testar aqui, porque ai teria varios or, e montaria em modo de execução seria diferente da tabela que não precisaria de limpa-la depois
aqui eu monto a string
aqui coloco ela na consulta sql
aqui eu monto a string
if (vetorIdcLot.Length <= 1000)
{
condicaoIDCLote.AppendFormat("ORDSVC.IDCLOT in ({0})", strIdcLots);
}
else
{
condicaoIDCLote.AppendFormat("(ORDSVC.IDCLOT = {0})", vetorIdcLot[0]);
for (int i = 1; i < vetorIdcLot.Length; i++)
{
condicaoIDCLote.AppendFormat(" OR ( ORDSVC.IDCLOT = {0} )", vetorIdcLot[i]);
}
}
aqui coloco ela na consulta sql
SQL.AppendFormat("WHERE ({0}) ", condicaoIDCLote.ToString());
-
- Rank: Analista Júnior
- Mensagens: 98
- Registrado em: Qua, 24 Set 2008 11:00 pm
- Localização: Belo Horizonte - MG
Bride
OCA Oracle PL/SQL Developer Certified Associate
OCA Oracle PL/SQL Developer Certified Associate
Sim, so que no seu caso você colocouvarios or com in, estou unsando literalmente varios or... pra testar estou montando eles dentro da sql
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 19 visitantes