Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL dinâmico e tabelas temporárias T-SQL


Você primeiro precisa criar sua tabela primeiro, então ela estará disponível no SQL dinâmico.

Isso funciona:
CREATE TABLE #temp3 (id INT)
EXEC ('insert #temp3 values(1)')

SELECT *
FROM #temp3

Isso não funcionará:
EXEC (
        'create table #temp2 (id int)
         insert #temp2 values(1)'
        )

SELECT *
FROM #temp2

Em outras palavras:
  1. Criar tabela temporária
  2. Executar procedimento
  3. Selecione na tabela temporária

Aqui está o exemplo completo:
CREATE PROC prTest2 @var VARCHAR(100)
AS
EXEC (@var)
GO

CREATE TABLE #temp (id INT)

EXEC prTest2 'insert #temp values(1)'

SELECT *
FROM #temp