--存储过程
create PROCEDURE CompanyNews_Delete
@ids varchar(100),
@MemberId int
AS 
declare @sql varchar(1000)
set @sql=''
if @memberId=0
set @sql='delete from [CompanyNews] where Id in ('+ @ids+')'
else
set @sql='delete from [CompanyNews] where MemberId=' + @MemberId + ' and Id in ('+ @ids+')'
exec(@sql)GO
exec CompanyNews_Delete '1,2,3',1
消息 245,级别 16,状态 1,过程 CompanyNews_Delete,第 10 行
在将 varchar 值 'delete from [CompanyNews] where and Id in (1,2,3) and MemberId=' 转换成数据类型 int 时失败。
怎么解决这个问题

解决方案 »

  1.   

    set @sql='delete from [CompanyNews] where MemberId=' + @MemberId + ' and LTRIM(Id) in ('+ @ids+')' 
      

  2.   

    set @sql='delete from [CompanyNews] where 
    MemberId=' + @MemberId + ' and CHARINDEX('',''+LTRIM(Id)+'','' ,'','''+ @ids+''','''')>0' 
    或这样
      

  3.   

    set @sql='delete from [CompanyNews] where MemberId=' + @MemberId + ' and cast(Id as varchar(50)) in ('+ @ids+')'
      

  4.   

    主要是@MemberId 转换出错   如果 我把@MemberId 写成 varchar 类型就可以
    请问各位高手 怎么解决这个问题
      

  5.   

    set @sql='delete from [CompanyNews] where MemberId=' + LTRIM(@MemberId) + ' and LTRIM(Id) in ('+ @ids+')'要字符连接肯定得字符型吧,转成字符
      

  6.   

    set @sql='delete from [CompanyNews] where MemberId=' + cast(@MemberId as varchar(50) + ' and Id  in ('+ @ids+')'
      

  7.   

    差括号
    set @sql='delete from [CompanyNews] where MemberId=' + cast(@MemberId as varchar(50)) + ' and Id  in ('+ @ids+')'
      

  8.   

    我主要是想 把@MemberId 不要转换程字符型   而是整形