CREATE PROCEDURE PROC_SELECT_CommodityInfo
@ComNumber varchar(50) = null
AS
declare @selectstring varchar(100)
 if(@ComNumber!='')
  begin
   set @selectstring=IsNull('   and  c.Com_Number  Like  ''%'+@ComNumber+'%''','')
   set @selectstring='select  c.*,s.*  from  TB_CommodityInfo c,TB_ComSort s  where  c.Com_Sort=s.S_ID '+@selectstring
  end
 else
  begin
   set @selectstring='select c.*,s.* from TB_CommodityInfo c,TB_ComSort s where c.Com_Sort=s.S_ID '
  end
EXEC(@selectstring) 
GO这是我写的一个存储过车,但是在进行模糊查询的时候会报一个like附近有语法错误,是怎么回事啊!!帮帮我啊!!

解决方案 »

  1.   

    --应该是这个太短了
    declare @selectstring varchar(100)
    --改成
    declare @selectstring varchar(8000)
      

  2.   

    @selectstring varchar(100)
    100设的太小了
      

  3.   


    CREATE PROCEDURE PROC_SELECT_CommodityInfo
    @ComNumber varchar(50)
    AS
    begin
    declare @selectstring varchar(100)
    if @ComNumber!='' or @ComNumber is not null 
    begin
    set @selectstring=IsNull('   and  c.Com_Number  Like  ''%'+@ComNumber+'%''','')
    set @selectstring='select  c.*,s.*  from  TB_CommodityInfo c,TB_ComSort s  where  c.Com_Sort=s.S_ID '+@selectstring
    end
    else
    begin
    set @selectstring='select c.*,s.* from TB_CommodityInfo c,TB_ComSort s where c.Com_Sort=s.S_ID '
    end
    EXEC(@selectstring) 
    end