Create Paging with Stored procedure

CREATE PROCEDURE [dbo].[proc_qca_CommunityMyFriendsSelect]
@UserId Bigint,
@StartIndex int,
@PageSize int,
@ColumnName Varchar(200),
@SortType Varchar(10)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- DECLARE @StartIndex int
-- DECLARE @PageSize int
-- DECLARE @UserId Bigint
-- DECLARE @ColumnName Varchar(200)
-- DECLARE @SortType Varchar(10)
--
-- SET @StartIndex =1;
-- SET @PageSize = 3;
-- SET @UserId = 104;
-- SET @ColumnName = 'date_last_update'
-- SET @SortType = 'asc'

DECLARE @Query NVARCHAR(MAX)
SET @Query =
'WITH MyFriends AS (
SELECT ur_friends.usr_unq_id, ur_friends.friend_unq_id, ur_friends.forward, ur_friends.backwards,
ur_users.first_name, ur_users.last_name, ur_users.middle_name, sn_MyProfiles.picture_file,
sn_MyProfiles.avatar, sn_MyProfiles.nickname, ur_friends.date_last_update, sn_MyProfiles.industry_focus
FROM sn_MyProfiles
INNER JOIN ur_users ON sn_MyProfiles.my_id = ur_users.unique_id
INNER JOIN ur_friends ON ur_users.unique_id = ur_friends.friend_unq_id
WHERE forward = 1 AND backwards = 1
AND usr_unq_id = '+ CAST(@UserId AS VARCHAR(40))+
'UNION
SELECT ur_friends.usr_unq_id, ur_friends.friend_unq_id, ur_friends.forward, ur_friends.backwards,
ur_users.first_name, ur_users.last_name, ur_users.middle_name, sn_MyProfiles.picture_file,
sn_MyProfiles.avatar, sn_MyProfiles.nickname, ur_friends.date_last_update, sn_MyProfiles.industry_focus
FROM sn_MyProfiles
INNER JOIN ur_users ON sn_MyProfiles.my_id = ur_users.unique_id
INNER JOIN ur_friends ON ur_users.unique_id = ur_friends.friend_unq_id
WHERE forward = 1 AND backwards = 1
AND friend_unq_id = '+ CAST(@UserId AS VARCHAR(40))+
'),
SelectedMyFriends AS (
SELECT ROW_NUMBER() OVER (ORDER BY ' + @ColumnName + ' ' + @SortType +') AS RowNumber, * from MyFriends )
SELECT * FROM SelectedMyFriends WHERE RowNumber BETWEEN ' + CAST(@StartIndex AS VARCHAR(40)) + 'AND ' + CAST(@StartIndex + @PageSize-1 AS VARCHAR(40));
--PRINT @Query

EXEC sp_executesql @Query
END

Comments

Popular Posts