У меня есть таблица, подобная приведенной ниже, и я должен подготовить хранимую процедуру SQL Server для принятия параметра для фильтрации по одному или нескольким столбцам для получения информации из этой таблицы
SERVER Application Environment
--------------------------------
SRV1 APP1 ENV1
SRV2 APP2 ENV1
SRV3 APP1 ENV2
SRV4 APP3 ENV1
SRV5 APP2 ENV2
Процедура должна принимать параметры, как показано ниже
EXEC GetSrvinfo @server = 'SRV1'
EXEC GetSrvinfo @application = 'APP1'
EXEC GetSrvinfo @environment = 'ENV1'
EXEC GetSrvinfo @environment = 'ENV1', @application = 'APP1'
EXEC GetSrvinfo @server = 'SRV1', @application = 'APP1'
Итак, я подготовил эту процедуру с помощью хранимой ниже процедуры
CREATE PROCEDURE [dbo].[GetSrvinfo]
(@server VARCHAR(10) = NULL,
@application VARCHAR(10) = NULL,
@environment VARCHAR(10) = NULL)
AS
BEGIN
SELECT *
FROM [SRVINFO] WITH (NOLOCK)
WHERE [SERVER] = @server OR COALESCE(@server,'') = ''
AND ([Application] = @application OR COALESCE(@application, '') = '')
AND ([Environment] = @environment OR COALESCE(@environment, '') = '')
END
Работает нормально для любых параметров, но не работает для нескольких параметров.