軟件測試開發技術PL/SQL用光標查詢多條記錄[2]

發表于:2009-10-14來源:作者:點擊數: 標簽:軟件測試sqlSQLSql光標
軟件測試 開發 技術PL/SQL用光標查詢多條記錄[2] SQL數據庫 關鍵字: sql 2、打開光標 打開光標的語法如下: OPEN cursor_name; 其中cursor_name是您以前定義的光標名稱。 打開光標將激活查詢并識別活動集,可是在執行光標取回命令之前,并沒有真正取回記錄

軟件測試開發技術PL/SQL用光標查詢多條記錄[2]  SQL數據庫

關鍵字:sql     2、打開光標

  打開光標的語法如下:
  OPEN cursor_name;

  其中cursor_name是您以前定義的光標名稱。

  打開光標將激活查詢并識別活動集,可是在執行光標取回命令之前,并沒有真正取回記錄。OPEN命令還初始化了光標指針,使其指向活動集的第一條記錄。光標被打開后,直到關閉之前,取回到活動集的所有數據都是靜態的,換句話說,光標忽略所有在光標打開之后,對數據執行的SQL DML命令(INSERT、UPDATE、DELETE和SELECT)。因此只有在需要時才打開它,要刷新活動集,只需關閉并重新打開光標即可。

  3、從光標中取回數據

  FETCH命令以每次一條記錄的方式取回活動集中的記錄。通常將FETCH命令和某種迭代處理結合起來使用,在迭代處理中,FETCH命令每執行一次,光標前進到活動集的下一條記錄。

  FETCH命令的語法:
  FETCH cursor_name INTO record_list;

  其中,cursor_name是前面定義的光標的名稱;record_list是變量列表,它接收活動集中的列。FETCH命令將活動集的結果放置到這些變量中。

  執行FETCH命令后,活動集中的結果被取回到PL/SQL變量中,以便在PL/SQL塊中使用。每取回一條記錄,光標的指針就移向活動集的下一條記錄。

  例:
  FETCH C1 INTO VNAME;
  WHILE C1%FOUND LOOP
  DBMS_OUTPUT.PUT_LINE(TO_CHAR(C1%ROWCOUNT)||' '||VNAME);
  END LOOP;

  其中,使用屬性'%FOUND'使得當FETCH到達活動集的結尾時,不會引發異常。其它屬性及含義見下表:
  屬性     含量
  %FOUND    布爾型屬性,當最近一次該記錄時成功返回,則值為TRUE
  %NOTFOUND  布爾型屬性,它的值總與%FOUND屬性的值相反
  %ISOPEN   布爾型屬性,當光標是打開時返回TRUE
  %ROWCOUNT  數字型屬性,返回已從光標中讀取的記錄數


  屬性     含量
  %FOUND    布爾型屬性,當最近一次該記錄時成功返回,則值為TRUE
  %NOTFOUND  布爾型屬性,它的值總與%FOUND屬性的值相反
  %ISOPEN   布爾型屬性,當光標是打開時返回TRUE
  %ROWCOUNT  數字型屬性,返回已從光標中讀取的記錄數

  4、關閉光標

  CLOSE語句關閉以前打開的光標,使得活動集不確定。當用戶的程序或會話結束時,Oracle隱式關閉光標。光標被關閉后,就不能對它執行任何操作了,否則將引發異常。

  CLOSE語句的語法是:
CLOSE cursor_name;

  其中,cursor_name是以前打開的光標的名稱。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97