create procedure usp_get_listgoods
@size varchar(50)=null, @type varchar(50)=null, @load varchar(50)=null
as
declare @sql varchar(8000);set @sql='select * from ListGoods where 1=1 '+
case when @size is null then '' else 'and size like ''%'+@size+'%''' end+
case when @type is null then '' else 'and type like ''%'+@type+'%''' end+
case when @load is null then '' else 'and load like ''%'+@load+'%''' end;exec(@sql)
go我想加个条件@id int类型
就是select * from ListGoods wher id=@id 合并到上面的代码里面  

解决方案 »

  1.   


    create procedure usp_get_listgoods
    @size varchar(50)=null, @type varchar(50)=null, @load varchar(50)=null
    ,@id int
    as
    declare @sql varchar(8000);set @sql='select * from ListGoods where id='+cast(@id as char(10))
    case when @size is null then '' else 'and size like ''%'+@size+'%''' end+
    case when @type is null then '' else 'and type like ''%'+@type+'%''' end+
    case when @load is null then '' else 'and load like ''%'+@load+'%''' end;exec(@sql)
    go
      

  2.   

    create procedure usp_get_listgoods
    @size varchar(50)=null, @type varchar(50)=null, @load varchar(50)=null,
    @id int
    as
    declare @sql varchar(8000);set @sql='select * from ListGoods where 1=1 '+
    case when @size is null then '' else 'and size like ''%'+@size+'%''' end+
    case when @type is null then '' else 'and type like ''%'+@type+'%''' end+
    case when @load is null then '' else 'and load like ''%'+@load+'%''' end
    +' and id='+ltrim(@id) ;exec(@sql)
    go
      

  3.   


    在将 varchar 值 'select * from ListGoods where [BigProviewID]=' 转换成数据类型 int 时失败。