INSERT inside a SELECT - SQL Server

Asked

Viewed 4,847 times

1

I need to do an INSERT inside a SELECT in some cases in my Query.

An example of how accurate:

SELECT IdTabela,
       Nome,
       CASE
         WHEN IdTabela > 10 
           THEN 
             INSERT INTO TabelaExemplo (IdTabelaExemplo) VALUES (IdTabela)
       END
FROM Tabela

I’ve searched several modes on the Internet, and one example I found is this:

INSERT INTO TabelaExemplo 
            (IdTabelaExemplo) 
VALUES      (SELECT IdTabela 
             FROM   Tabela 
             WHERE  IdTabela > 10) 

But that way doesn’t solve my problem.

Thank you!

At. William

3 answers

2

  • It is that this way does not work in my case friend. I need something very similar to the first example... Thank you!

0

Create a trial to do this, and there inside you will be able to validate via SELECT and with a IF decide whether to insert or not.

CREATE PROCEDURE PROC_INSERE
AS
BEGIN
DECLARE @IDTABELA INT

SELECT @IDTABELA  = IdTabela FROM Tabela

if @IDTABELA > 10 
    begin
         INSERT INTO TabelaExemplo (IdTabelaExemplo) VALUES (IdTabela)
    end

END

0

Another way to do this would be by using a Cursor:

/* 
  Procedimento que serve para:
  incluir registro em uma tabela com base em uma consulta e uma condição 
  Criado em: 08/08/2016
*/

USE Sample1

-- Não exibe alterações
SET NOCOUNT ON

DECLARE 
 @idTabela int,
 @Nome varchar(100) 

DECLARE Incluir_cursor CURSOR FOR
   select
     idTabela, Nome
   from
    Tabela1

-- Inicialização de variáveis
SET @idTabela = 0

OPEN Incluir_cursor

FETCH NEXT FROM Incluir_cursor INTO @idTabela, @Nome

WHILE @@FETCH_STATUS = 0
BEGIN
  IF @idTabela > 10
   INSERT INTO TabelaExemplo (IdTabelaExemplo) VALUES (@idTabela)

  -- Vai para o próximo registro
  FETCH NEXT FROM Incluir_cursor INTO @idTabela, @Nome
END

-- Fecha o cursor
CLOSE Incluir_cursor
DEALLOCATE Incluir_cursor

-- Exibe alterações
SET NOCOUNT OFF

Browser other questions tagged

You are not signed in. Login or sign up in order to post.