我已存儲的程序分頁和我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_'前綴 - 它被保留用於微軟的**系統**程序。 –