سلام
هدف من از نوشتن استور پروسیجر های زیر اینه که بتونم ، چند تا فیلتر رو به صورت همزمان داشته باشم و اینکه ممکنه یکی از فیلد ها بیشتر از یک پارامتر داشته باشه مثلا اطلاعاتی رو بخوام ببینم که منطقش هم شرق ، هم مرکزه هم غرب
که تو استور پروسیجر دوم دچار مشکل شدم .
استور پروسیجر اولم
@Shargh nvarchar(50)='',
@Markaz nvarchar(50)='',
@Gharb nvarchar(50)='',

select * From Acceptor
Left Outer Join InstallationProject On InstallationProject.Terminal = Acceptor.Terminal
where
((terminalstatus = N'منتظر نصب' OR terminalstatus = N'منتظر نصب با کد ریالی') AND InstallStatus = 'False' )
AND TakhsisDate < @TakhsisFinishDate

AND ( (Acceptor.Area = @Shargh OR @Shargh IS NULL) OR (Acceptor.Area = @Markaz OR @Markaz IS NULL) OR (Acceptor.Area = @Gharb OR @Gharb IS NULL) )

که به درستی کار میکنه ، اما در استور پروسیجر دوم تعدا فیلد ها برای فیلتر رو بیشتر کردم ، زمانی که پارامتر رو به این صورت تعریف میکنم : @Gharb nvarchar(50)=''
فیلتر TerminalStatus کار میکنه و بقیه فیلتر ها کار نمیکنند

و زمانی که پارامتر رو به این صورت تعریف میکنم : @Gharb nvarchar(50)=null فیلتر TerminalStatus کار نمیکنه و بقیه فیلتر ها کار میکنند
استور پروسیجر دوم :

@Terminal   NVARCHAR(50)=NULL,
@Serial NVARCHAR(50)=NULL,
@Area NVARCHAR(50)=NULL,
@City NVARCHAR(50)=NULL,
@AdminName NVARCHAR(50)=NULL,
@TechnicianName NVARCHAR(50)=NULL,
@InstallTechnicianName NVARCHAR(50)=NULL,
@ProjectType NVARCHAR(50)=NULL,
@TerminalStatus1 NVARCHAR(50)='',
@TerminalStatus2 NVARCHAR(50)='',
@TerminalStatus3 NVARCHAR(50)='',
@TerminalStatus4 NVARCHAR(50)='',
@TerminalStatus5 NVARCHAR(50)='',
@FromDate datetime=NULL,
@ToDate datetime=NULL


Select InstallationProject.Terminal,InstallationProject.S erial,InstallationProject.TechnicianName as InstallTechnician,InstallationDate
,InstallationProject.LackInstallReason,Installatio nProject.InstallReason,InstallationProject.AdminCo mment
,InstallationProject.DateInstallationDeadline,Inst allationProject.TimeInstallationDeadline, InstallationProject.SmsSend
,Acceptor.Area,Acceptor.City,Acceptor.TerminalStat us,Acceptor.StoreName,Acceptor.AcceptorName,Accept or.Phone,Acceptor.Mobile,Acceptor.Bank
,Acceptor.AdminName,Acceptor.TechnicianName,Accept or.TakhsisDate,Acceptor.Address,Acceptor.ProjectTy pe,Acceptor.PMCodeRiali,Acceptor.DailyTransactionC ount,Acceptor.DailyTransactionPrice
,CentralWarehouse.Date as InputDate ,CentralWarehouse.Time as InputTime
From InstallationProject
left outer join Acceptor on Acceptor.Terminal=InstallationProject.Terminal
left outer join CentralWarehouse on CentralWarehouse.Serial = Acceptor.Serial
Where Moved='0'
AND (InstallationProject.Terminal = @Terminal OR @Terminal IS NULL )
AND (InstallationProject.Serial = @Serial OR @Serial IS NULL)
AND (Acceptor.Area = @Area OR @Area IS NULL)
AND (Acceptor.City = @City OR @City IS NULL)
AND (Acceptor.AdminName = @AdminName OR @AdminName IS NULL)
AND (Acceptor.TechnicianName = @TechnicianName OR @TechnicianName IS NULL)
AND (InstallationProject.TechnicianName = @InstallTechnicianName OR @InstallTechnicianName IS NULL)
AND (Acceptor.ProjectType = @ProjectType OR @ProjectType IS NULL)
AND ( (Acceptor.TerminalStatus = @TerminalStatus1 OR @TerminalStatus1 IS NULL) OR (Acceptor.TerminalStatus = @TerminalStatus2 OR @TerminalStatus2 IS NULL) OR (Acceptor.TerminalStatus = @TerminalStatus3 OR @TerminalStatus3 IS NULL) OR (Acceptor.TerminalStatus = @TerminalStatus4 OR @TerminalStatus4 IS NULL) OR (Acceptor.TerminalStatus = @TerminalStatus5 OR @TerminalStatus5 IS NULL) )
AND (@FromDate IS NULL OR @ToDate IS NULL OR (Acceptor.TakhsisDate >= @FromDate AND Acceptor.TakhsisDate <= @ToDate) )