Ich habe diese Abfrage, um die Ergebnisse zu paginieren, und sie funktionierte unter SQL Server 2012 einwandfrei. Ich musste jedoch meine Datenbank auf SQL Server 2008 verschieben, und jetzt funktioniert meine gespeicherte Prozedur nicht mehr. Ich habe einige Nachforschungen angestellt und festgestellt, dass OFFSET
dies in SQL Server 2008 nicht funktioniert. Welche Alternative sollte ich jetzt verwenden? Wie erreiche ich die gleiche Funktionalität mit SQL Server 2008?
Hier ist meine gespeicherte Prozedur:
CREATE PROCEDURE [dbo].[sp_JobSearch]
@EnteredKeyword nvarchar(200) = '',
@EnteredLocation nvarchar(200) = '',
@PageNumber INT = 1,
@PageSize INT = 40
AS
BEGIN
SELECT
MasterJob.Title, MasterJob.CompanyName,
MasterJob.ShortDesc, MasterJob.Url,MasterJob.PostedTime,
MasterJob.Location, JobBoard.JobBoardName
FROM
MasterJob
LEFT JOIN
JobBoard ON MasterJob.JobBoardId = JobBoard.JobBoardId
WHERE
(MasterJob.Title LIKE '%' + @EnteredKeyword + '%')
AND (MasterJob.Location LIKE '%' + @EnteredLocation + '%')
ORDER BY
[MasterJobId]
OFFSET @PageSize * (@PageNumber - 1) ROWS
FETCH NEXT @PageSize ROWS ONLY;
END
sql-server-2008
t-sql
paging
Iman
quelle
quelle
Antworten:
Verwenden Sie einen Common Table Expression (CTE):
quelle