Điều này là do phạm vi của EXEC
câu lệnh khác với phạm vi của mầm có chứa. Đó là, cuộc gọi của bạn tới EXEC
đang tạo bảng tạm thời và sau đó nó sẽ tự động được bỏ làm phạm vi cho EXEC
còn lại. Về cơ bản, bạn phải thực hiện toàn bộ bên trong một EXEC
tuyên bố:
DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * INTO #temp
FROM ' + @PKSchema + '.dbo.' + @PKTableName + ' WHERE 1<>1
INSERT INTO #temp ...'
EXEC(@sql)