注册 登录
编程论坛 SQL Server论坛

带参数的存储过程

fqbnet2008 发布于 2007-06-27 11:51, 645 次点击

表结构
TextLast number varchar(50)
B_black col001 varchar(50)
存储过程的作用 删除TextLast 中 number = col001 的所有的记录
因为类似B_black的表很多,所以建一个存储过程

go
create proc operdata( @tb_name nvarchar(100),@ncounts int out)
as
begin
declare @ncount int
declare @sql nvarchar(4000)
set @sql='select @ncount = count(*) from TextLast where TextLast.number in (select number from TextLast a, '+@tb_name+' b where a.number = b.col001) '
exec sp_executesql @sql,N'@ncount int out',@ncount out
if(@ncount!=0)--如果没有符合条件的记录,就不用执行下面的删除
begin
set @sql='delete from TextLast where TextLast.number in (select number from TextLast a, '+@tb_name+' b where a.number = b.col001)'
exec sp_executesql @sql
set @ncount=@@ROWCOUNT
end
set @ncounts=@ncount

end
创建成功

declare @n int
exec [operdata](N'B_black',@n out)
执行的时候出错了

服务器: 消息 170,级别 15,状态 1,行 2
第 2 行: 'B_133black' 附近有语法错误。

3 回复
#2
fqbnet20082007-06-27 11:59
有人吗?帮我看一下,
#3
fqbnet20082007-06-28 14:37
我晕了, 怎么没有人呢?
#4
laoliu5152007-07-05 18:28
你既然创建了存储过程,你为什么还要用sp_executesql呢?
1