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

criando dinamicamente a tabela #temp e depois usada para inserir os dados


Isso ocorre porque o escopo do EXEC A instrução é diferente do escopo do sproc que o contém. Ou seja, sua chamada para EXEC está criando a tabela temporária e, em seguida, está sendo descartada automaticamente como o escopo do EXEC é deixado. Você basicamente tem que fazer tudo dentro do um EXEC declaração:
DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * INTO #temp
            FROM ' + @PKSchema + '.dbo.' + @PKTableName + ' WHERE 1<>1
            INSERT INTO #temp ...'

EXEC(@sql)