я хранимая процедуру для пейджинга и я хав @where я параметр Я должен передать его Постулаты моей SP, как следоватьпрохода Где пункт в качестве параметра хранимой процедуры
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 –
Ощущается как код запах, что некоторые внешние код должен иметь интимное знание запроса внутри этого хранимого proc, чтобы он мог написать разумное предложение where, которое будет работать с ним. Возможно, прочитайте [Условия динамического поиска в T-SQL] (http://www.sommarskog.se/dyn-search.html). Кроме того, в качестве побочного примечания избегайте префикса 'sp_' - он зарезервирован для процедур ** системы ** Microsoft **. –