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

 

Nguồn hwme

Giải thích phía trên là đoạn code phân trang gồm 2 tham số.

Giả sử thực thi EXEC spPhanTrang_Table (1,20)

Nếu tại vị tri trang 1 no sẽ hiển thị 20 row đầu tiên, nếu vị trí trang là số 2 nó sẽ hiển thị row từ 21 đến 21+20-1 = 40

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s