I wrote a stored procedure to search the users in my database. But sometimes it returns too many users, and it takes too much time.
So if the result set has over 500 rows, I decided to return only the first 500 rows. But I have no idea how to get count from stored procedure.
Please help me.
My original stored procedure is below. Thanks
ALTER PROCEDURE [dbo].[up_Select_SearchUser]
@companyCode varchar(50)
, @keyword nvarchar(20)
, @isRelative bit
, @langCode varchar(10)
AS
BEGIN
SET NOCOUNT ON;
SELECT
LOWER(M.UserID) AS EmpID,
LOWER(M.EmpID) AS REmpID,
dbo.uf_CompanyPhone(M.CompanyPhone, M.ExtensionNumber) AS ExtensionNumber,
M.CellPhone,
dbo.uf_TeamManagerYN(M.UserID) AS TeamChiefYN,
ISNULL(M.DisplayName, '') AS DisplayName,
ISNULL(M.DisplayName_Eng, '') AS DisplayName_Eng,
M.EMail,
M.MainDeptCode AS DeptCode,
ISNULL(DT.DisplayName, '') AS DeptName,
ISNULL(CL.CompanyCode, '') AS CompanyCode,
ISNULL(CL.CompanyName, '') AS CompanyName,
ISNULL(R.RankCode, '') AS RankCode,
ISNULL(R.RankName, '') AS RankName,
ISNULL(J.JobCode, '') AS JobCode,
ISNULL(J.JobName, '') AS JobName,
ISNULL(D.DutyCode, '') AS DutyCode,
ISNULL(D.DutyName, '') AS DutyName,
ISNULL(M.FaxNumber, '') AS FaxNumber,
ISNULL(M.ADDisplayName, '') AS ADDisplayName,
'' AS Address,
ISNULL(M.CompanyPhone, '') AS CompanyPhone,
ISNULL(R.SortOrder, '') AS RankOrder
FROM
dbo.tb_User M WITH (NOLOCK)
INNER JOIN
dbo.tb_Dept DT WITH (NOLOCK) ON M.MainDeptCode = DT.DeptCode
INNER JOIN
dbo.tb_Rank R WITH (NOLOCK) ON M.RankCode = R.RankCode
AND M.GroupCode = R.GroupCode
AND M.DetailCode = R.DetailCode
AND M.CompanyCode = R.CompanyCode
INNER JOIN
dbo.tb_Company CL WITH (NOLOCK) ON M.CompanyCode = CL.CompanyCode
LEFT OUTER JOIN
dbo.tb_Duty D WITH (NOLOCK) ON M.DutyCode = D.DutyCode
AND M.GroupCode = D.GroupCode
AND M.DetailCode = D.DetailCode
AND M.CompanyCode = D.CompanyCode
LEFT OUTER JOIN
dbo.tb_Job J WITH (NOLOCK) ON M.JobCode = J.JobCode
WHERE
(M.DisplayName LIKE '%' + @keyword + '%'
OR M.UserID LIKE '%' + @keyword + '%')
AND M.DisplayYN = 'Y'
AND M.CompanyCode LIKE @companyCode
ORDER BY
RankOrder, JobCode, DisplayName
END