none
insert com múltiplos resultados de um Select RRS feed

  • Pergunta

  • Boa noite pessoal, estou com uma duvida que possivelmente tem uma solução simples, mas estou com dificuldade para resolver.


    bom vamos lá

    eu tenho um select que me retorna alguns resultados.

    exemplo:

    tabela tem 2 colunas = Nome, Valor
    
    Select Nome From table1 where Valor > 30
    
    Digamos que o resultado retorna
    
    Yure
    Rosalinda
    Felipe
    Juliana
    

    ai agora vem o x da questão
    eu preciso dar um insert separadamente em outra tabela para cada nome listado
    exemplo:

    insert into table2 (Nome,Resposta,informacao)
    values ('@NAME','Parabéns','agora vc pode prosseguir para a próxima etapa')
    
    manualmente eu faria um insert assim e onde está @Name eu colocaria o nome de um dos 4 resultados, porém eu preciso fazer esses 4 insert de 1x só!
    
    
    alguém saberia me ajudar? e se isso é possível xD, porque todas minhas tentativas estão gerando algum tipo de erro!

    eu agradeço desde já! :3

    sexta-feira, 28 de maio de 2021 22:38

Respostas

  • obrigado pela ajuda, mas eu achei uma solução, depois de pensar um bom tempo lembrei que tinha feito algo parecido a um tempo atrás!

    vou postar a solução aqui caso alguém tenha uma duvida parecida!

      DECLARE
      @Name varchar(30),
      @Valor int
    
      DECLARE CURSOR_TESTE CURSOR FOR
      SELECT Name,Valor
      FROM Table1
    
      OPEN CURSOR_TESTE
      FETCH NEXT FROM CURSOR_TESTE
      INTO @Name,@Valor
      WHILE @@FETCH_STATUS = 0
       BEGIN
        IF (@Valor > 30)
         BEGIN
    		INSERT INTO table2 (Nome,Resposta,informacao)
    		values (@Name,'Parabéns','agora vc pode prosseguir para a próxima etapa')
    
         END
    ELSE
    
    	PRINT 'ERROR'
    	
    FETCH NEXT FROM CURSOR_TESTE
    INTO @Name,@Valor
    END
    CLOSE CURSOR_TESTE
    DEALLOCATE CURSOR_TESTE

    Espero que possa ajudar alguém que tenha a duvida parecida :D

    • Marcado como Resposta karygalock sábado, 29 de maio de 2021 16:26
    sábado, 29 de maio de 2021 16:25

Todas as Respostas

  • Karygalock1,

    Se entendi bem, você quer pegar justamente os valores dos nomes e inserir em conjunto com os demais valores em uma outra tabela! Se for isso, acredito que o exemplo abaixo poderá lhe ajudar:

    Insert Into Table2(Nome, Resposta, Informacao)
    Select Nome, Resposta, Informacao From table1 where Valor > 30
    Go


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sábado, 29 de maio de 2021 12:24
  • obrigado pela ajuda, mas eu achei uma solução, depois de pensar um bom tempo lembrei que tinha feito algo parecido a um tempo atrás!

    vou postar a solução aqui caso alguém tenha uma duvida parecida!

      DECLARE
      @Name varchar(30),
      @Valor int
    
      DECLARE CURSOR_TESTE CURSOR FOR
      SELECT Name,Valor
      FROM Table1
    
      OPEN CURSOR_TESTE
      FETCH NEXT FROM CURSOR_TESTE
      INTO @Name,@Valor
      WHILE @@FETCH_STATUS = 0
       BEGIN
        IF (@Valor > 30)
         BEGIN
    		INSERT INTO table2 (Nome,Resposta,informacao)
    		values (@Name,'Parabéns','agora vc pode prosseguir para a próxima etapa')
    
         END
    ELSE
    
    	PRINT 'ERROR'
    	
    FETCH NEXT FROM CURSOR_TESTE
    INTO @Name,@Valor
    END
    CLOSE CURSOR_TESTE
    DEALLOCATE CURSOR_TESTE

    Espero que possa ajudar alguém que tenha a duvida parecida :D

    • Marcado como Resposta karygalock sábado, 29 de maio de 2021 16:26
    sábado, 29 de maio de 2021 16:25
  • obrigado pela ajuda, mas eu achei uma solução, depois de pensar um bom tempo lembrei que tinha feito algo parecido a um tempo atrás!

    vou postar a solução aqui caso alguém tenha uma duvida parecida!

      DECLARE
      @Name varchar(30),
      @Valor int
    
      DECLARE CURSOR_TESTE CURSOR FOR
      SELECT Name,Valor
      FROM Table1
    
      OPEN CURSOR_TESTE
      FETCH NEXT FROM CURSOR_TESTE
      INTO @Name,@Valor
      WHILE @@FETCH_STATUS = 0
       BEGIN
        IF (@Valor > 30)
         BEGIN
    		INSERT INTO table2 (Nome,Resposta,informacao)
    		values (@Name,'Parabéns','agora vc pode prosseguir para a próxima etapa')
    
         END
    ELSE
    
    	PRINT 'ERROR'
    	
    FETCH NEXT FROM CURSOR_TESTE
    INTO @Name,@Valor
    END
    CLOSE CURSOR_TESTE
    DEALLOCATE CURSOR_TESTE

    Espero que possa ajudar alguém que tenha a duvida parecida :D

    Karygalock1,

    Ok, só tome cuidado com o uso de cursores para evitar sobrecarga de processamento, mas enfatizo que é um recurso sensacional.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sábado, 5 de junho de 2021 12:20