而如果这样测试就可以得到想要的结果
declare @GypProductsBZDataTableName char(6)
declare @SearchKey char(40)
set @GypProductsBZDataTableName='GypGbz'
set @SearchKey='''%电%'''
print('select cpdm, cpmc from '+ @GypProductsBZDataTableName+' where cpmc like ''%'+@SearchKey+'''%')
declare @GypProductsBZDataTableName char(6)
declare @SearchKey char(40)
set @GypProductsBZDataTableName='GypGbz'
set @SearchKey='''%电%'''
print('select cpdm, cpmc from '+ @GypProductsBZDataTableName+' where cpmc like ''%'+@SearchKey+'''%')
ALTER PROCEDURE dbo.GypGetProductsCode ( @GypProductsBZDataTableName char(6), @SearchKey char(40) ) AS
exec('select cpdm, cpmc from '+
@GypProductsBZDataTableName+' where cpmc like ''%'+@SearchKey+'%''')
exec('select cpdm, cpmc from '+ @GypProductsBZDataTableName+' where cpmc like ''%'+@SearchKey+'''%')
------------
exec('select cpdm, cpmc from '+ @GypProductsBZDataTableName+' where cpmc like ''%'+@SearchKey+'%''')
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 '%电%'
尤其是fcuandy的建议非常好,谢谢