我已存储的程序分页和我HAVA放慢参数@where我需要通过它来statment我的SP如下通Where子句作为参数传递给存储过程
Create PROCEDURE SP_hrm_Employee_Paged
(
@PageNo INT = 1,
@PageSize INT = 10,
@where nvarchar(500)
)
AS
BEGIN
/*–Declaring Local Variables corresponding to parameters for modification */
DECLARE
@lPageNbr INT,
@lPageSize INT,
@lFirstRec INT,
@lLastRec INT,
@lTotalRows INT
/*Setting Local Variables*/
SET @lPageNbr = @PageNo
SET @lPageSize = @PageSize
SET @lFirstRec = (@lPageNbr - 1) * @lPageSize
SET @lLastRec = (@lPageNbr * @lPageSize + 1)
SET @lTotalRows = @lFirstRec - @lLastRec + 1
; WITH CTE_Results
AS (
SELECT ROW_NUMBER() over(ORDER By BranchId ASC) as ROWNUM,
Count(*) over() AS TotalCount,
EmployeeId,
EmployeeFirstName,
EmployeeMiddleName,
EmployeeLastName,
EmployeeMobile,
EmployeeMobile2,
EmployeeEmail,
EmployeeAddress
FROM t_hrm_employees
)
SELECT
TotalCount,
ROWNUM,
EmployeeId,
EmployeeFirstName,
EmployeeMiddleName,
EmployeeLastName,
EmployeeMobile,
EmployeeMobile2,
EmployeeEmail,
EmployeeAddress
FROM CTE_Results AS CPC
WHERE
ROWNUM > @lFirstRec
AND ROWNUM < @lLastRec
ORDER BY ROWNUM ASC
END
动态SQL就是这样。 – DarkKnight
看这个 http://stackoverflow.com/questions/31985175/how-to-execute-sub-query-in-if-exists-condition/31985628#31985628 –
感觉就像一个代码味道,一些外部代码必须对这个存储过程中的查询有深入的了解,以便它可以编写一个合理的where子句来处理它。也许阅读[T-SQL中的动态搜索条件](http://www.sommarskog.se/dyn-search.html)。另外,作为一个附注,避免'sp_'前缀 - 它被保留用于微软的**系统**程序。 –