Ini karena cakupan EXEC pernyataan berbeda dengan ruang lingkup sproc yang mengandung. Yaitu, panggilan Anda ke EXEC sedang membuat tabel sementara, dan kemudian secara otomatis dihapus sebagai ruang lingkup untuk EXEC tersisa. Pada dasarnya Anda harus melakukan banyak hal di dalam satu EXEC pernyataan:
DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * INTO #temp
FROM ' + @PKSchema + '.dbo.' + @PKTableName + ' WHERE 1<>1
INSERT INTO #temp ...'
EXEC(@sql)