مشکل در دانیامیک کوئری

بپرسید

0

{{ digitTrunc(content.likes) }}

سلام

فرض کنید یک جدول داریم که دارای ستونهای 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					   
								,@UrgencyID	
				
    If @@ERROR <> 0 GoTo ErrorHandler
    Set NoCount OFF
    Return(0)
  
ErrorHandler:
    Return(@@ERROR)

اما هنگام اجرا وقتی Sender وReceiver را با داده های مورد نظر پر میکنیم(هیچگاه nullنمی باشند)اما بازهم اطلاعات1000نفر مورد نظر را برمیگرداند نه اطلاعات اشخاصی که وارد شده اند

چگونه باید کد را اصلاح کنم که فقط اطلاعاتی نفرات مورد نظر را برگرداند نه همه را

	If @Sender <> ''
        Set @SQLQuery = @SQLQuery + '  And (Sender = @Sender)'
	 If @Receiver <> ''
        Set @SQLQuery = @SQLQuery + '  And (Receiver = @Receiver)'

باتشکر

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

پاسخ ها به این سوال

پاسخ ها به این سوال

{{ digitTrunc(post.likes) }}

این پست در تاریخ {{ dateString(new Date(post.deleteDate)) }} توسط {{ post.deletedByUser }} حذف شده است.

دلیل حذف: {{ post.deleteReason ?? 'نامشخص' }}

{{ err }}
{{ post.userAchivements.rhodiumAchievements }}
{{ post.userAchivements.platinumAchievements }}
{{ post.userAchivements.goldAchievements }}
{{ post.userAchivements.silverAchievements }}
{{ post.userAchivements.bronzeAchievements }}
{{ timeSince(new Date(post.date)) }} قبل

برای ثبت پاسخ خود در وب سایت وارد حساب کاربری خود شوید
قابلیت ارسال مطلب توسط مدیریت سایت غیر فعال شده است