Как выполнить условие WHERE условно? - PullRequest
2 голосов
/ 24 июня 2011

Привет У меня есть хранимая процедура:

ALTER PROCEDURE [dbo].[spGetStaffsAndClients]
(
    @staffIds nvarchar(1024)
)
AS
BEGIN

    declare @Address varchar (100)
    declare @Apartment varchar (100)
    declare @City varchar (100)
    declare @State varchar (10)
    declare @Zip varchar (10)
    declare @County varchar (100)
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here

    /* Get Client's Residence */

    select dbo.GetClientFullName(s.FirstName, s.MiddleInit, s.LastName) StaffName, 
    dbo.GetStaffTitlesById(s.Id) StaffTitle,
    dbo.GetClientFullName(c.FirstName, c.MiddleInit, c.LastName) ClientName, 
    dbo.GetAddressByEntityNameAndId('Client', c.Id) ClientAddress

    from ClientStaff cs 
    left outer join Staff s on cs.StaffId = s.Id 
    left outer join Client c on cs.ClientId = c.Id

    where s.Id in ( SELECT convert(int,Value) FROM dbo.Split(@staffIds, ','))

END

Я хочу, чтобы предложение where выполнялось, только если @staffIds <> '', а не выполнялось иначе.

Пожалуйста, объясните мне, как можноЯ делаю это.

Ответы [ 2 ]

2 голосов
/ 24 июня 2011
where 
    @staffIds = '' or 
    @staffIds is null or 
    s.Id in ( SELECT convert(int,Value) FROM dbo.Split(@staffIds, ','))
0 голосов
/ 24 июня 2011

Вы можете сначала попытаться составить запрос и сохранить его в виде строки.

Затем выполните строку, используя EXEC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...