یک راه دیگه این هست که از بلوک IF استفاده کنین و برای هر حالت یک بلوک بنویسین که البته مشکل پرفورمنس نداره ولی اگر کد پروسیجر پیچیده باشه در تغییرات بعدی باید حواستون به همه بلوک ها باشه:
Procedure ProcName @P1 int=-1 , @P2 nvarchar(100)=''
IF @P1 IS NULL AND @P2 IS NULL
BEGIN
SELECT * FROM TableName
END
IF @P1 IS NULL AND @P2 IS NOT NULL
BEGIN
SELECT * FROM TableName
WHERE Field2 LIKE @P2
END