我对游标怎么这么晕呼啊

来源:百度知道 编辑:UC知道 时间:2024/05/03 01:38:55
CREATE PROCEDURE www_Scheme
AS
declare @fdReportXXXID as varchar(50),
@fdBudgetFC as varchar(200),
@fdBudgetCode as varchar(200),
@fdBudgetFCAll as varchar(500) //定义3个变量
declare c1 cursor for //一个游标
select distinct fdReportSchemeID
from tbSchemeBalance
order by fdReportSchemeID
open c1 //使用前打开游标
fetch next from c1 into @fdReportXXXID //取得第一个游标值
while @@FETCH_STATUS = 0 //循环
begin
set @fdBudgetFCAll = '' //设置变量fdBudgetFCAll的变量值
declare c2 cursor for select fdBudgetFC, fdBudgetCode
from tbSchemeBalance
where fdReportSchemeID = @fdReportXXXID and fdIsTotal = 1

open c2

fetch next from c2 into @fdBudgetFC, @fdBudgetCode
while @@FETCH_STATUS = 0
begin
set @fdBudgetFCAll = @fdBudgetFCAll
+ @fdBudgetCode
+ ':'
+ @fdBudgetFC
+ ' '
fetch next from c2 into @fdBudgetFC, @fdBudgetCode
end

我标记

while @@FETCH_STATUS = 0 //循环

@@FETCH_STATUS = 0说明下面还有元组,FETCH 语句成功;

@@FETCH_STATUS = -1说明下面没有元组,FETCH 语句失败或此行不在结果集中。

@@FETCH_STATUS = -2 被提取的行不存在于表中,FETCH 语句失败

故在@@FETCH_STATUS = -1或@@FETCH_STATUS = -2循环结束