我创建了一个带光标的函数来计算我的另一个表中的所有主菜。
当我做PRINT dbo.cursorEnroll ();
时
当我在桌子上只有10个主菜时,我得到11作为输出。
@@ FETCH = 0应该意味着获取成功,因此应该只设置学生已注册10次。我很困惑这个额外的计数来自哪里。
免责声明:我知道这不是计算表格中条目数量的最佳方法。但是,我只是在学习和练习使用游标。
CREATE FUNCTION dbo.cursorEnroll ()
RETURNS INT AS
BEGIN
DECLARE @studentsEnrolled INT
SET @studentsEnrolled = 0
DECLARE myCursor CURSOR FOR
SELECT enrollementID
FROM courseEnrollment
OPEN myCursor;
FETCH NEXT FROM myCursor INTO @studentsEnrolled
WHILE @@FETCH_STATUS = 0
BEGIN
SET @studentsEnrolled = @studentsEnrolled+1
FETCH NEXT FROM myCursor INTO @studentsEnrolled
END;
CLOSE myCursor
RETURN @studentsEnrolled
END;
答案 0 :(得分:3)
因为您将enrollementID
提取到@studentsEnrolled
然后添加1.对于最后一行enrollementID = 10
,结果会得到11。