2011-06-24 13 views
2

こんにちは、私は、ストアドプロシージャを持っている: 条件付きでWHERE句を実行するには?

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
where 
    @staffIds = '' or 
    @staffIds is null or 
    s.Id in (SELECT convert(int,Value) FROM dbo.Split(@staffIds, ',')) 
+0

素晴らしい、それは働いた。 – asma

0

最初にクエリを作成して文字列に格納できます。

次に、EXECを使用して文字列を実行します。

関連する問題