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)