orcale 之游标的属性
无论是显式游标还是隐式游标都会有四个属性分别是:%ISOPEN、%FOUND、%NOTFOUND、%ROWCOUNT 下面我们分别对着几种属性进行分析。
%FOUND
该属性表示当前游标是否指向有效的一行,结果是一个Boolean 类型的。这个属性一般用来判断是否结束当前游标的使用。
OPEN emp_cur; --打开游标 --将第一行的数据放入变量中,之后游标后移 FETCH emp_cur INTO emp_no, emp_nanme; LOOP EXIT WHEN NOT emp_cur%FOUND; --如果游标已经到末尾结束 IF emp_no = '7839' THEN INSERT INTO t_emp values(emp_no,emp_nanme); else INSERT INTO t_emp2 values(emp_no,emp_nanme); END IF; FETCH emp_cur INTO emp_no, emp_nanme; END LOOP; CLOSE emp_cur; --关闭游标
在隐式游标中引用方法为 SQL%FOUND。
delete from student where sid = 1; if SQL%FOUND THEN INSERT INTO states values(1,1); else INSERT INTO states values(1,0); end if;
%NOTFOUND
这个属性和上面的 %FOUND 很类似,只不过结果相反。这里就不举例子了,大家自己练习下。
%ROWCOUNT
这个属性记录了游标取过记录的行数,也可以理解为当前游标所在的行数。这个属性在循环的时候十分有效。
LOOP FETCH emp_cur INTO emp_no, emp_nanme; EXIT WHEN emp_cur%ROWCOUNT=10; ... END LOOP;
在隐式游标中使用 %ROWCOUNT
%ISOPEN
顾名思义是表示游标是否处于打开的状态。在我们的实际使用前最好使用该属性进行检查。
IF emp_cur%ISOPEN THEN FETCH emp_cur INTO emp_no, emp_nanme; ELSE OPEN emp_cur END IF;
在隐式游标中可以使用 SQL%ISOPEN 进行引用,但是需要说的是隐式游标中 SQL%ISOPEN 总是为 TRUE 因此隐式游标中不需要打开游标关闭游标,也不需要对游标的状态进行检查。