Pular para o conteúdo
  • Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 11 anos atrás por Avatar de TcheloTchelo.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #106114
    Avatar de TcheloTchelo
    Participante

      Caros 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 of

      Se 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 arraytable

      NÃ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 arraytable

      Att,
      Tchelo

      #106115
      Avatar de rmanrman
      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.

        #106119
        Avatar de TcheloTchelo
        Participante

          Não gera erro simples nao insere os registros que nao existem na coleção.
          Ex: select na tabela
          01
          02
          03
          04
          05

          a 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,
          Tchelo

          #106120
          Avatar de rmanrman
          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.

            #106121
            Avatar de TcheloTchelo
            Participante

              Entã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

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.
            plugins premium WordPress