对PLSQL的cursor 的rowcount 的理解

时间:2021-10-11 22:55:38

开始

rowcount 并不是定义或open了cursor,就是固定的值,它随着每次fetch而累计:

--INDEX BY Table
SET SERVEROUTPUT ON;

DECLARE
  v_empno emp.empno%TYPE;
  v_ename emp.ename%TYPE;
  
  CURSOR emp_cursor IS
  SELECT empno,ename from emp where empno<>1000;
  
BEGIN

LOOP

  IF NOT emp_cursor%ISOPEN  THEN
     OPEN emp_cursor;
  END IF; 
  
  FETCH emp_cursor INTO  v_empno,v_ename; 
  EXIT WHEN emp_cursor%NOTFOUND;
   
  dbms_output.put_line(
'rowcount is:'|| emp_cursor%ROWCOUNT || '-- empno is:' || v_empno || '-- emp name is:' || v_ename); END LOOP; END; /

运行结果:

anonymous block completed
rowcount is:1-- empno is:7369-- emp name is:SMITH
rowcount is:2-- empno is:7499-- emp name is:ALLEN
rowcount is:3-- empno is:7521-- emp name is:WARD
rowcount is:4-- empno is:7566-- emp name is:JONES
rowcount is:5-- empno is:7654-- emp name is:MARTIN
rowcount is:6-- empno is:7698-- emp name is:BLAKE
rowcount is:7-- empno is:7782-- emp name is:CLARK
rowcount is:8-- empno is:7788-- emp name is:SCOTT
rowcount is:9-- empno is:7839-- emp name is:KING
rowcount is:10-- empno is:7844-- emp name is:TURNER
rowcount is:11-- empno is:7876-- emp name is:ADAMS
rowcount is:12-- empno is:7900-- emp name is:JAMES
rowcount is:13-- empno is:7902-- emp name is:FORD
rowcount is:14-- empno is:7934-- emp name is:MILLER

结束