Tôi không quen thuộc với Oracle như tôi muốn. Tôi có một số bản ghi 250k và tôi muốn hiển thị chúng 100 trang mỗi trang. Hiện tại tôi có một thủ tục lưu trữ truy lục tất cả một phần tư triệu bản ghi đến tập dữ liệu bằng bộ điều hợp dữ liệu và tập dữ liệu và phương thức dataadapter.Fill (tập dữ liệu) trên kết quả từ proc được lưu trữ. Nếu tôi có "Số trang" và "Số lượng bản ghi trên mỗi trang" dưới dạng giá trị số nguyên, tôi có thể chuyển thành tham số, thì cách nào tốt nhất để lấy lại chỉ phần cụ thể đó. Giả sử, nếu tôi vượt qua 10 dưới dạng số trang và 120 dưới dạng số trang, từ câu lệnh chọn, nó sẽ cho tôi từ 1880 đến 1200, hoặc một cái gì đó tương tự, toán học của tôi trong đầu tôi có thể bị tắt.Phân trang với Oracle
Tôi đang làm điều này trong .NET với C#, nghĩ rằng đó không phải là quan trọng, nếu tôi có thể làm cho nó ngay trên mặt sql, sau đó tôi nên được mát mẻ.
Cập nhật: Tôi đã có thể sử dụng đề xuất của Brian và nó đang hoạt động rất tốt. Tôi muốn làm việc trên một số tối ưu hóa, nhưng các trang đang đến trong 4 đến 5 giây thay vì một phút, và kiểm soát phân trang của tôi đã có thể tích hợp rất tốt với procs lưu trữ mới của tôi.
là rownum một từ thuộc? –
Có một cột 'được xây dựng trong' mà Oracle hỗ trợ, nó luôn bắt đầu ở mức 1 và gia số cho mỗi hàng. Vì vậy, trong đoạn mã này, nếu bạn có 1000 hàng, thứ tự sắp xếp được áp dụng và sau đó mỗi hàng được gán một bảng phân phối. Các lựa chọn bên ngoài (s) sử dụng những số hàng để xác định vị trí 'trang' bạn đang tìm kiếm dựa trên các trang của bạn. –
Điều này là tốt đẹp, nhưng khủng khiếp chậm trên lựa chọn lớn, chỉ cần kiểm tra những gì sẽ là thời gian để chọn 0 đến 1000 và 500.000 đến 501.000 ... Tôi đã sử dụng loại cấu trúc chọn bây giờ tôi đang tìm kiếm một workaround. – newhouse