› Fóruns › SQL e PL/SQL › Ajuda SELECT ARRAY IN / NOT IN
- Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 12 anos, 6 meses atrás por
Tchelo.
-
AutorPosts
-
14 de novembro de 2013 às 12:48 am #106114
Tchelo
ParticipanteCaros amigos boa tarde,
Fiz uma procedure para realizar um insert mediante um Array List.
Usando in / member of funciona.
O inverso que preciso nao funciona : not in / not member ofSe alguem puder ajudar … ex abaixo …
Ex:
Funciona:
insert into teste from (
select codigo from tabela01
where codigo in (select * from arraytable))Funciona:
insert into teste from (
select codigo from tabela01
where codigo member of arraytableNÃO Funciona:
insert into teste from (
select codigo from tabela01
where codigo not in (select * from arraytable))NÃO Funciona:
insert into teste from (
select codigo from tabela01
where codigo not member of arraytableAtt,
Tchelo14 de novembro de 2013 às 3:53 pm #106115rman
Participante@Tchelo
O NÃO Funciona significa que gera um erro ou não insere nenhum registro?
Da forma que funciona, eu acredito que o arraytable possui apenas uma coluna, e o SELECT interno do FROM retorna apenas 1 registro.
Quando você nega o IN, se retornar mais que um registro realmente vai gerar erro. Neste caso você deve usar um CURSOR ao invés de uma VARIÁVEL.
14 de novembro de 2013 às 8:38 pm #106119Tchelo
ParticipanteNão gera erro simples nao insere os registros que nao existem na coleção.
Ex: select na tabela
01
02
03
04
05a coleção tem o 02 e 03
quando faço in a procedure insere o 02 e 03.
quando faço o not in deveria inserir 01 04 e 05 mas nao insere nada.Tanto com not in ou not member of
Att,
Tchelo14 de novembro de 2013 às 8:56 pm #106120rman
Participante@Tchelo
Provavelmente o SELECT não está retornando nada.
Verifique o retorno:
select codigo from tabela01
where codigo not in (select * from arraytable);select codigo from tabela01
where codigo not member of arraytable;
Desconsidere a minha resposta anterior, me confundi com SELECT INTO, mas é INSERT INTO.
14 de novembro de 2013 às 10:18 pm #106121Tchelo
ParticipanteEntão ocorre alguma falha com uso o operador not in ou not member of … por isso nao faz o insert ja coloquei no arraytable todos os registros da tabela dai com :
in ou member of ele insere tudo …
agora not in ou not member of falha por algum motivo …
mas alguma ideia ???se eu jogar para cursor ou fazer um join abaixo do select funciona só que o custo fica alto ainda mais que venho encadeando dentro de outros procedures e funções …
abs,
Tchelo -
AutorPosts
- Você deve fazer login para responder a este tópico.
› Fóruns › SQL e PL/SQL › Ajuda SELECT ARRAY IN / NOT IN