Phân trang trong SQL

Xin giới thiệu với các bạn Procedure phân trang dữ liệu trong SQL server
Giả sử ta có 1 bảng trong cơ sở dữ liệu chỉ gốm 2 trường là CateID và CateName. sau đây là Store phân trang khi cần truy vấn dữ liệu có phân trang

CREATE PROCEDURE [dbo].[spPhanTrang_Table] (
    @PageNumber int,
    @PageSize int
)

AS
    DECLARE @Start int, @End int
    BEGIN TRANSACTION GetDataSet
    SET @Start = (((@PageNumber - 1) * @PageSize) + 1)
    IF @@ERROR <> 0
        GOTO ErrorHandler
    SET @End = (@Start + @PageSize - 1)
    IF @@ERROR <> 0
        GOTO ErrorHandler
    CREATE TABLE #TemporaryTable (
        Row int IDENTITY(1,1) PRIMARY KEY,
        CateID int, CateName nvarchar(100)
    )
    IF @@ERROR <> 0
            GOTO ErrorHandler
    INSERT INTO #TemporaryTable
        SELECT CateID, CateName FROM [TB_Category] 
    IF @@ERROR <> 0
        GOTO ErrorHandler
    SELECT CateID, CateName  
        FROM #TemporaryTable
        WHERE (Row >= @Start) AND (Row <= @End)
    IF @@ERROR <> 0
        GOTO ErrorHandler
    DROP TABLE #TemporaryTable
    COMMIT TRANSACTION GetDataSet
    RETURN 0
ErrorHandler:
ROLLBACK TRANSACTION GetDataSet
RETURN @@ERROR

Để sử dụng Store trên Bạn dùng lệnh:

EXEC spPhanTrang_Table (1,20) -- Nếu bạn muốn hiển thị dữ liệu trang 1 và 20 bản ghi trên 1 trang

Chúc các bạn thành công