Thứ ba, ngày 26 tháng 9 năm 2017

Phân trang sử dụng cursor trong Sql 2000

Ngày đăng: 15/3/2011, 18:57:51AM | Lượt xem: 3,770
Hot!

Chào các bạn. Mình xin giới thiệu với các bạn về Cursor trong SQL và cách sử dụng nó để dùng cho việc phân trang

Cursor giúp chúng ta có thể lấy dữ liệu vào trong bộ nhớ sau đó bạn có thể Fetch (nạp) lần lượt từng bản ghi  bằng cách Move Next.

Bây giờ mình xin giới thiệu cách dùng Cursor để phân trang mà mình đã học được từ Thầy của mình.

Giả sử mình có bảng được tạo ra như sau:

             

create table sitelinks
(
                           iid int primary key identity(1,1),
                           vurl varchar(100),
                           vdesc nvarchar(200)
)

 Để phân trang thì đầu tiên ta cần phải biết được bạn muốn lấy ra trang thứ bao nhiêu và số bản ghi trả về là bao nhiêu. Stored Procedure như sau:

CREATE PROC padding @curentpage int, @returnrows int
AS
CREATE TABLE #tb_temp(iid int, vurl varchar(100), vdesc nvarchar(200))
 
DECLARE   padding_cursor SCROLL CURSOR
FOR
            SELECT * FROM sitelinks       
 
OPEN padding_cursor
 
DECLARE  @iid int
DECLARE   @vurl varchar(100)
DECLARE   @vdesc nvarchar(200)
 
DECLARE   @from int
DECLARE   @count_of_rows int
DECLARE  @total_row int
 
SET @from = @curentpage * @returnrows + 1
SET @total_row = @@cursor_rows
 
BEGIN
SET @count_of_rows = @returnrows
            WHILE(@count_of_rows > 0)
            BEGIN
                        FETCH ABSOLUTE @from FROM padding_cursor INTO @iid, @vurl, @vdesc
                        INSERT INTO #tb_temp VALUES(@iid, @vurl, @vdesc)
                        SET @from = @from + 1
                        SET @count_of_rows = @count_of_rows -1
            END
END
 
CLOSE padding_cursor
 
DEALLOCATE padding_cursor
 
SELECT * FROM #tb_temp
SELECT @total_row AS total_record

 

Ở đây chúng ta sẽ dùng một bảng tạm #tb_temp để insert lần lược từng bản ghi đựợc chọn, sau khi đã insert hết tất cả các bản ghi thì ta sẽ đóng con trỏ và gọi bảng #tb_temp ra.

 

Bây giờ bạn chỉ việc nhập dữ liệu vào bảng sitelinks và gọi Stored Procedure  “padding” ra. Ví dụ:

EXEC padding 0, 5

Sẽ lấy ra 5 bản ghi tại trang 1.

 

Hy vọng bài viết này sẽ giúp ích cho các bạn.

Thân.            

 Chia sẻ qua: 
Hot!
Ý kiến bạn đọc

These items will be permanently deleted and cannot be recovered. Are you sure?

Gallery

image

Maecenas viverra rutrum pulvinar

Maecenas viverra rutrum pulvinar! Aenean vehicula nulla sit amet metus aliquam et malesuada risus aliquet. Vestibulum rhoncus, dolor sit amet venenatis porta, metus purus sagittis nisl, sodales volutpat elit lorem…

Read more

Text Links

Thiết kế logo chuyên nghiệp Insky
DAFABET
W88 w88b.com/dang-ky-tai-khoan-w88
W88
ca do bong da online
Copyright © 2011 - 2012 vietshare.vn by phamkhuong102@gmail.com doanhkisi2315@gmail.com. All rights reserved.