日期:2014-05-19  浏览次数:20527 次

在存储过程中如何获得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 行)