Esto se debe a que el alcance del EXEC
declaración es diferente al alcance del sproc contenedor. Es decir, su llamada a EXEC
está creando la tabla temporal, y luego se elimina automáticamente como el ámbito para el EXEC
es izquierda. Básicamente tienes que hacer todo dentro del uno EXEC
declaración:
DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * INTO #temp
FROM ' + @PKSchema + '.dbo.' + @PKTableName + ' WHERE 1<>1
INSERT INTO #temp ...'
EXEC(@sql)