Dit komt omdat het bereik van de EXEC statement verschilt van de reikwijdte van de bevattende sproc. Dat wil zeggen, uw oproep aan EXEC is de tijdelijke tabel aan het maken en wordt dan automatisch verwijderd als het bereik voor de EXEC is links. Je moet eigenlijk alles binnen de één . doen EXEC verklaring:
DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * INTO #temp
FROM ' + @PKSchema + '.dbo.' + @PKTableName + ' WHERE 1<>1
INSERT INTO #temp ...'
EXEC(@sql)