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

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

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.

Tags: 
Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
What Are The Best Apps For Iphone or Ipad?

Ứng dụng tốt nhất Đối với Iphone, Ipad là gì?

Communication has grown and phones have become a necessity to every body. There are different types of phones and individuals can choose from the variety offered.

5 Videos mới cần thiết để Working với Blocks trong Drupal 8

5 Videos mới cần thiết để Working với Blocks trong Drupal 8

Next week we'll start digging into the State API to get more parts of our block moved over. Have a great week and enjoy!

Google Search: các chức năng trong Keyword tool

Google Search: các chức năng trong Keyword tool

Công cụ Keyword tool trong chiến dịch Quảng cáo Google Adwords không xa lạ trong cộng đồng SEO – SEM. Chúng tôi giới thiệu các chức năng trong Keyword tool giúp cho những người mới hiểu hết chức năng và chọn được một danh sách từ khóa quảng cáo hiệu quả.

Công ty diệt chuột T&C

 

Diet con trung