Using Temporary Table to Divide the Results Set In More Pages [Home]

CREATE PROCEDURE spGetPage
@Search NVARCHAR (100),
@Page SMALLINT,
@RowsPerPage DECIMAL,
@NumberOfPages INT OUTPUT
AS

SET NOCOUNT ON
DECLARE @NumberOfRows DECIMAL

--tabelul temporar
CREATE TABLE #Temp (TempID INT IDENTITY (1, 1), [ID] INT, [Name] NCHAR (100), [Description] NVARCHAR (200))

INSERT INTO #Temp
SELECT [ID], [Name], [Description]
FROM Article
WHERE [Name] LIKE @Search + '%'
ORDER BY [Name]

--numărul de înregistrări
SELECT @NumberOfRows = COUNT (*) FROM #Temp

--calculez numărul de pagini
SET @NumberOfPages = CEILING (@NumberOfRows / @RowsPerPage)

--selectez înregistrările pentru pagina cerută
SELECT TempID, [ID], [Name], [Description]
FROM #Temp
WHERE TempID
BETWEEN ((@Page - 1) * @RowsPerPage + 1) AND ((@Page - 1) * @RowsPerPage + @RowsPerPage)

--șterg tabelul temporar
DROP TABLE #Temp
SET NOCOUNT OFF
RETURN @@ERROR
GO