Detta beror på att omfattningen av EXEC
uttalandet skiljer sig från omfattningen av den innehållande sproc. Det vill säga ditt anrop till EXEC
skapar den temporära tabellen, och sedan tas den automatiskt bort som räckvidd för EXEC
finns kvar. Du måste i princip göra allt i ett EXEC
uttalande:
DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * INTO #temp
FROM ' + @PKSchema + '.dbo.' + @PKTableName + ' WHERE 1<>1
INSERT INTO #temp ...'
EXEC(@sql)