在存储过程中如何获得delete成功的条数?
在cursor的循环里执行delete操作,想要统计多少条数据delete成功了。
------解决方案--------------------可以的
定义一个变量就行了,删除一条加1
------解决方案---------------------- try
@@ROWCOUNT
返回受上一语句影响的行数。
语法
@@ROWCOUNT
返回类型
integer
注释
任何不返回行的语句将这一变量设置为 0 ,如 IF 语句。
示例
下面的示例执行 UPDATE 语句并用 @@ROWCOUNT 来检测是否有发生更改的行。
UPDATE authors SET au_lname = 'Jones '
WHERE au_id = '999-888-7777 '
IF @@ROWCOUNT = 0
print 'Warning: No rows were updated '
------解决方案-------------------- declare @count int
set @count=0
delete ...
if @@error=0
set @count=@count+@@rowcount
------解决方案--------------------这样用:
create table ta(id int)
insert ta select 1
union all select 2
union all select 2
--drop table ta
declare @number int,@i int
DECLARE roy CURSOR
FOR SELECT * from ta
OPEN roy
FETCH next FROM roy into @number
WHILE @@FETCH_STATUS = 0
begin
delete ta where id=@number
set @i=isnull(@i,0)+@@rowcount
FETCH NEXT FROM roy INTO @number
end
CLOSE roy
DEALLOCATE roy
select @i
(所影响的行数为 1 行)
(所影响的行数为 2 行)
-----------
3
(所影响的行数为 1 行)