'delete  from  '+@tb+' where id='+@delid+'

解决方案 »

  1.   

    sorry,应该这样,因为目标是int,加了三个引号相当于加了一个引号
    'delete  from  '+@tb+' where id='+@delid+''
      

  2.   

    CREATE PROCEDURE prodel
      @tb         varchar(20), --表名
      @delid     int --要删除的id
     ASDECLARE @sql varchar(200)
    declare @d varchar(100)
    SET @d=convert(varchar,@delid)
    SET @sql='delete  from  '+@tb+' where id='+@d
    EXEC(@sql)
    print @sql
    GO
      

  3.   

    去掉中间变量CREATE PROCEDURE prodel
      @tb         varchar(20), --表名
      @delid     int --要删除的id
     ASDECLARE @sql varchar(200)
    declare @d varchar(100)
    --SET @d=convert(varchar,@delid)
    SET @sql='delete  from  '+@tb+' where id='+convert(varchar(100),@delid)
    EXEC(@sql)
    print @sql
    GO--测试table
    create table test(id int)insert into test select 1 union all select 52--测试
    exec prodel 'test',52
    (所影响的行数为 1 行)delete  from  test where id=52--结果
    select * from test
    id          
    ----------- 
    1(所影响的行数为 1 行)