سلام
فرض کنید یک جدول داریم که دارای ستونهای Sender وReceiver دارای 1000نفر متفاوت می باشند
و sp زیر را نوشته ام
ALTER Procedure [dbo].[S_test_Search] @Number nvarchar(50)
,@Sender nvarchar(100)
,@Receiver nvarchar(100)
,@Comment nvarchar(max)
,@ActionID nvarchar(100)
,@TranscriptID nvarchar(100)
,@UrgencyID nvarchar(100)
AS
Set NoCount ON
Declare @SQLQuery AS NVarchar(4000)
Declare @ParamDefinition AS NVarchar(2000)
Set @SQLQuery = '
select
*
from test
where (1=1)
'
If @Number <> ''
Set @SQLQuery = @SQLQuery + ' And (Number like' + '''%''' + '+ Number +' + '''%''' + ')'
If @Sender <> ''
Set @SQLQuery = @SQLQuery + ' And (Sender = @Sender)'
If @Receiver <> ''
Set @SQLQuery = @SQLQuery + ' And (Receiver = @Receiver)'
If @Comment <> ''
Set @SQLQuery = @SQLQuery + ' And (Comment like' + '''%''' + '+ @Comment +' + '''%'''+ ')'
If @ActionID is not null
Set @SQLQuery = @SQLQuery + ' And (Type = @ActionID)'
If @TranscriptID is not null
Set @SQLQuery = @SQLQuery + ' And (cm.TranscriptID = @TranscriptID)'
If @UrgencyID is not null
Set @SQLQuery = @SQLQuery + ' And (cm.UrgencyID = @UrgencyID)'Set @ParamDefinition =
' @Number nvarchar(50)
,@Sender nvarchar(50)
,@Receiver nvarchar(50)
,@Comment nvarchar(max)
,@ctionID nvarchar(100)
,@TranscriptID nvarchar(100)
,@UrgencyID nvarchar(100)Execute sp_Executesql @SQLQuery
,@ParamDefinition
,@Number
,@Sender
,@Receiver
,@Comment
,@ActionID
,@TranscriptID
,@UrgencyIDIf @@ERROR <> 0 GoTo ErrorHandler
Set NoCount OFF
Return(0)ErrorHandler:
Return(@@ERROR)
If @Sender <> ''
Set @SQLQuery = @SQLQuery + ' And (Sender = @Sender)'
If @Receiver <> ''
Set @SQLQuery = @SQLQuery + ' And (Receiver = @Receiver)'
برچسب:
نویسنده: محمد رضا جوادیان