根据ID删除一个信息的存储过程解决思路

根据ID删除一个信息的存储过程 alterPROCEDURE[dbo].[pro_allTable]@tableNamevarchar(100),--表名@Idint-

根据ID删除一个信息的存储过程

alter   PROCEDURE   [dbo].[pro_allTable]
@tableName   varchar(100),--表名
@Id   int   --ID号
as
declare   @sql   varchar(1000)

Set   nocount   on

set   @sql=N 'DELETE   FROM   '+@tableName+   N '   WHERE   [ID]=   '+@id

exec   sp_executesql   @sql
go

出错
将   nvarchar   值   'DELETE   FROM   TABLE1   WHERE   [ID]= '   转换为数据类型为   int   的列时发生语法错误。
哪位大哥帮忙看一下

[解决办法]
set @sql= 'DELETE FROM '+@tableName+ ' WHERE [ID]= '+ RTRIM(@id)

[解决办法]
set @sql=N 'DELETE FROM '+@tableName+ N ' WHERE [ID]= '+ cast(@id as varchar(10))
一个varchar与一个int相加,不报错才怪
[解决办法]
set @sql= 'DELETE FROM '+@tableName+ ' WHERE [ID]= '+ TRIM(@id)