Как написать Dynamic SqL Query для подобного поиска? - PullRequest
0 голосов
/ 23 сентября 2019

У меня возникли проблемы при написании динамического запроса SQL для подобного поиска.Я хочу получить помощь по моей проблеме. Пожалуйста, покажите мне дорожную карту для моего проекта.Я получил результат для ACode BCode CCode, но DCode не получил результат.ACode Bcode CCode может получить правильные результаты.DCode не может получить результат.Я хочу назначить DCode с помощью LIKE SEARCH << '% DCode%' >>.Пожалуйста помоги.Спасибо, кто интересуется моими заданиями:)

Create PROCEDURE [dbo].[BDSPag] 
( 
 @Acode nvarchar(100)=null,    
 @BCode nvarchar(100)=null,    
 @CCode nvarchar(100)=null,    
 @DCode nvarchar(200)=null
)
AS         
BEGIN


Declare @SQL nvarchar(max)
        Declare @SqlParams nvarchar(max)
        Set @SQL = 'Select  ACode, BCode, CCode, DCode  FROM  tblCollection where 1=1'
        if(@Acode is not null) -- gp Code
        set @SQL= @SQL+' and CategoriesCode= @CC'
            if(@BCode is not null)--B Code
        set @SQL= @SQL+' and GItem= @GI'
            if(@CCode is not null) --C Code
        set @SQL= @SQL+' and CtdCode= @CtdC'


         declare @Paran nvarchar(150)
          set @Paran=' and DCode LIKE '''+ '%' + '@GN' + '%' + '''' 
        set @SQL= @SQL+  @Paran
     Execute sp_executesql @SQL,
         N'@CC nvarchar(100), @GI nvarchar(100), @CtdC nvarchar(100), @RecU nvarchar(100),@GIU nvarchar(100), @GN nvarchar(100) ',
         @CC=@ACode, @GI=@BCode, @CtdC=@CCode ,@GN=@DCode
    End

1 Ответ

0 голосов
/ 23 сентября 2019

Вам не нужно относиться к параметрам Like, как к другим параметрам.Просто добавьте подстановочные знаки «%» в значение параметра.

Create PROCEDURE [dbo].[BDSPag] 
( 
 @Acode nvarchar(100)=null,    
 @BCode nvarchar(100)=null,    
 @CCode nvarchar(100)=null,    
 @DCode nvarchar(200)=null
)
AS         
BEGIN

  set @DCode = '%' + @DCode + '%'

  Declare @SQL nvarchar(max)
  Declare @SqlParams nvarchar(max)

  set @SqlParams = N'@CC nvarchar(100), @GI nvarchar(100), @CtdC nvarchar(100), @RecU nvarchar(100),@GIU nvarchar(100), @GN nvarchar(100) '

  Set @SQL = 'Select  ACode, BCode, CCode, DCode  FROM  tblCollection where 1=1'

  if(@Acode is not null) -- gp Code
    set @SQL= @SQL+' and CategoriesCode= @CC'
  if(@BCode is not null)--B Code
    set @SQL= @SQL+' and GItem= @GI'
  if(@CCode is not null) --C Code
    set @SQL= @SQL+' and CtdCode= @CtdC'
  if(@Dcode is not null) --D Code 
    set @SQL= @SQL+' and DCode like @GN'

  print @SQL -- Show the SQL statement to execute

  Execute sp_executesql @SQL,
                        @SqlParams,
                        @CC=@ACode, @GI=@BCode, @CtdC=@CCode, @GN=@DCode
End
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...