SQL - Retrieve data pagewise
CREATE TABLE tblContact (
Id INT IDENTITY(1,1)
, FirstName NVARCHAR(10)
, LastName NVARCHAR(10)
, Address NVARCHAR(10)
, Tel_no NVARCHAR(10)
)
GO
CREATE PROCEDURE [dbo].[GetAllContacts]
@searchVal VARCHAR(500),
@page INT = NULL,
@perPage INT = NULL
AS
DECLARE @Start INT, @End INT
SET @page = ISNULL(@page, 1)
SET @perPage = ISNULL(@perPage, 10)
SET @start = CASE WHEN @page = 1 THEN 0 ELSE (@page - 1) * @perPage END + 1
SET @end = CASE WHEN @page = 1 THEN @perPage ELSE (@page * @perPage) END
;WITH [Contacts] AS (
SELECT [Id]
, [FirstName]
, [LastName]
, [Address]
, [Tel_no]
, ROW_NUMBER( ) OVER (ORDER BY LastName) AS [Index]
FROM [tblContact]
WHERE ([FirstName] LIKE ('%'+ @searchVal +'%') OR [LastName] LIKE ('%'+ @searchVal +'%'))
),
[Counter] AS
(
SELECT COUNT(*) AS [Count] FROM [Contacts]
)
SELECT [Id]
, [FirstName]
, [LastName]
, [Address]
, [Tel_no]
, @page AS CurrentPage
, @perPage AS PageSize
, CEILING(CAST([Counter].[Count] AS DECIMAL(18,2)) / @perPage) AS TotalPages
FROM Contacts, [Counter]
WHERE [Index] >= @start AND [Index] <= @end
GO
-----------------------------------------------------------------
DROP TABLE tblContact
GO
CREATE TABLE tblContact (
Id INT IDENTITY(1,1)
, FirstName NVARCHAR(10)
, LastName NVARCHAR(10)
, Address NVARCHAR(10)
, Tel_no NVARCHAR(10)
)
GO
-- dummy data
-- page 1
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'a' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'b' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'c' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'd' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'e' ,NULL ,NULL)
-- page 2
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'f' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'g' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'h' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'i' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'j' ,NULL ,NULL)
-- page 3
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'k' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'l' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'm' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'n' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'o' ,NULL ,NULL)
-- page 4
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'p' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'q' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'r' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 's' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 't' ,NULL ,NULL)
-- page 5
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'u' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'v' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'w' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'x' ,NULL ,NULL)
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'y' ,NULL ,NULL)
-- page 6
INSERT INTO [dbo].[tblContact] ([FirstName] ,[LastName] ,[Address] ,[Tel_no]) VALUES ('a', 'z' ,NULL ,NULL)
GO
EXEC dbo.[GetAllContacts] 'a', 2, 10
GO
EXEC dbo.[GetAllContacts] 'a', 1, 5
GO
EXEC dbo.[GetAllContacts] 'a', 3, 5
Comments
Post a Comment