SQL Server 2005 ROW_NUMBER()が提供する新しい関数を使用すると、行番号を含む結果セットを取得できます。この行番号は、データベース側でのページングに使用できます。
CREATE PROCEDURE [dbo].[getcust]
@PageIndex INT,
@PageSize INT,
@Searchkey VARCHAR(255),
@TotalRecords int OUTPUT
AS
IF EXISTS(SELECT * FROM tbcustomer WHERE cust_firstname= @Searchkey)
BEGIN
SELECT @TotalRecords =count(*) FROM tbcustomer WHERE cust_firstname= @Searchkey;
WITH customer AS (
SELECT ROW_NUMBER() OVER (ORDER BY cust_firstname ASC) AS Row,
cust_id, cust_firstname,address,phone
FROM tbcustomer WHERE cust_firstname= @searchkey
)
SELECT cust_id,cust_firstname,address,phone FROM customer
WHERE Row between (@PageIndex - 1) * @PageSize + 1 and @PageIndex*@PageSize
END