而如果这样测试就可以得到想要的结果
declare @GypProductsBZDataTableName char(6) 
declare @SearchKey char(40) 
set @GypProductsBZDataTableName='GypGbz' 
set @SearchKey='''%电%''' 
print('select cpdm, cpmc from '+ @GypProductsBZDataTableName+' where cpmc like ''%'+@SearchKey+'''%') 

解决方案 »

  1.   

    exec('select cpdm, cpmc from '+ @GypProductsBZDataTableName+' where cpmc like ''%'+@SearchKey+'%''')
      

  2.   


    ALTER PROCEDURE dbo.GypGetProductsCode ( @GypProductsBZDataTableName char(6), @SearchKey char(40) ) AS  
    exec('select cpdm, cpmc from '+ 
         @GypProductsBZDataTableName+' where cpmc like ''%'+@SearchKey+'%''')
      

  3.   


    exec('select cpdm, cpmc from '+ @GypProductsBZDataTableName+' where cpmc like ''%'+@SearchKey+'''%')
    ------------
    exec('select cpdm, cpmc from '+ @GypProductsBZDataTableName+' where cpmc like ''%'+@SearchKey+'%''')
      

  4.   

    你的@searchKey是char(40)会自动补空格,改为varchar(40)
      

  5.   

    另外确实如楼上几位朋友所述,后面加错了,应该是  @SearchKey+'%''')
      

  6.   


    ALTER PROCEDURE dbo.GypGetProductsCode
    (
        @GypProductsBZDataTableName char(6),        
        @SearchKey varchar(40)            
    )
    AS
        exec('select cpdm, cpmc from '+ @GypProductsBZDataTableName+' where cpmc like ''%'+@SearchKey+'%''')
    如楼上所说,如果你的@SearchKey定义成char(40)的话,你得到语句将会是这样的:
    select cpdm, cpmc from GypGbz where cpmc like '%电                                      %'
    事实上,你要的应该是:
    select cpdm, cpmc from GypGbz where cpmc like '%电%'
      

  7.   

    谢谢,各位了。
    尤其是fcuandy的建议非常好,谢谢