Phân trang bằng 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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.