Я делаю хранимую процедуру, которая принимает динамическую фильтрацию, проблема в том, что мне нужно, чтобы она была максимально гибкой.
ALTER PROCEDURE astp_test
@WhereClause NVARCHAR(max) = NULL
AS
DECLARE @FilteredResults AS TABLE (testId int, testfield datetime2)
DECLARE @sql AS NVARCHAR(MAX) = N'SELECT testId , testfield
FROM aviw_test
WHERE IsOpen = 1 AND IsLatesInsert = 1
AND testStepNo = 7
AND test2 IS NULL
AND (testfielddate IS NULL OR testfielddate2 < GETUTCDATE())
AND Domain IN (SELECT Domain FROM project WITH (NOLOCK) WHERE Status = ''Active'')' +
CASE WHEN @WhereClause IS NOT NULL
THEN N' AND ' + @WhereClause ELSE N''
END
INSERT INTO @FilteredResults
EXEC sys.sp_executesql @stmt = @sql;
Я хочу обеспечить @WhereClause
ввод, но в этомКстати, есть несколько флажков, которые отправляют что-то вроде этого: "AND testDatePick = '2019-10-10' AND testStage = 'InProgress' AND testArea = 'London' "
. Так что будет лучшим способом сделать это?