sorry,应该这样,因为目标是int,加了三个引号相当于加了一个引号 'delete from '+@tb+' where id='+@delid+''
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
去掉中间变量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 行)
'delete from '+@tb+' where id='+@delid+''
@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
@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 行)