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