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 因此隱式游標中不需要打開游標關閉游標,也不需要對游標的狀態進行檢查。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM