婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Oracle游標的使用實例詳解

Oracle游標的使用實例詳解

熱門標簽:海南400電話哪里辦理 呼倫貝爾智能手機地圖標注 南寧人工智能電銷機器人費用 安陽外呼系統免費 濟南地圖標注公司 分布式呼叫中心 圖像地圖標注 貴陽電話外呼系統哪家好 400電話是不是免費申請

什么是游標?

①從表中檢索出結果集,從中每次指向一條記錄進行交互的機制。

②關系數據庫中的操作是在完整的行集合上執行的。

由 SELECT 語句返回的行集合包括滿足該語句的 WHERE 子句所列條件的所有行。由該語句返回完整的行集合叫做結果集。

應用程序,尤其是互動和在線應用程序,把完整的結果集作為一個單元處理并不總是有效的。

這些應用程序需要一種機制來一次處理一行或連續的幾行。而游標是對提供這一機制的結果集的擴展。

游標是通過游標庫來實現的。游標庫是常常作為數據庫系統或數據訪問 API 的一部分而得以實現的軟件,用來管理從數據源返回的數據的屬性(結果集)。這些屬性包括并發管理、在結果集中的位置、返回的行數,以及是否能夠在結果集中向前和/或向后移動(可滾動性)。

游標跟蹤結果集中的位置,并允許對結果集逐行執行多個操作,在這個過程中可能返回至原始表,也可能不返回至原始表。

換句話說,游標從概念上講基于數據庫的表返回結果集。

由于它指示結果集中的當前位置 ,就像計算機屏幕上的光標指示當前位置一樣,“游標”由此得名。

游標有什么作用?

①指定結果集中特定行的位置。

②基于當前的結果集位置檢索一行或連續的幾行。

③在結果集的當前位置修改行中的數據。

④對其他用戶所做的數據更改定義不同的敏感性級別。

⑤可以以編程的方式訪問數據庫。

引言

本節對Oracle中的游標進行詳細講解。本節所舉實例來源Oracle中scott用戶下的emp表dept表:

一、游標:

1、概念:

游標的本質是一個結果集resultset,主要用來臨時存儲從數據庫中提取出來的數據塊。

二、游標的分類:

1、顯式游標:

由用戶定義,需要的操作:定義游標、打開游標、提取數據、關閉游標,主要用于對查詢語句的處理。

屬性:%FOUND %NOTFOUND %ISOPEN %ROWCOUNT

Example:打印emp表的員工信息

DECLARE
 CURSOR emp_cursor IS SELECT empno,ename,job FROM emp;
 v_empno emp.empno%TYPE;
 v_name emp.ename%TYPE;
 v_job emp.job%TYPE;
BEGIN
 OPEN emp_cursor;
 LOOP
 FETCH emp_cursor INTO v_empno,v_name,v_job;
 DBMS_OUTPUT.PUT_LINE('員工號為:'||v_empno||'姓名是'||v_name||'職位:'||v_job);
 EXIT WHEN emp_cursor%NOTFOUND;
 END LOOP;
 CLOSE emp_cursor;
END;

這里嚴格按照顯示游標的書寫規則:DECLARE emp_cursor定義游標OPEN emp_cursor打開游標FETCH emp_cursor INTO...提取數據CLOSE emp_cursor關閉游標,因為提取出來的數據屬于多行,所以通過loop循環打印即可。

Example2:檢驗游標是否打開,如果打開顯示提取行數

DECLARE
 CURSOR emp_cursor IS SELECT empno,ename,job FROM emp;
 v_empno emp.empno%TYPE;
 v_name emp.ename%TYPE;
 v_job emp.job%TYPE;
BEGIN
 OPEN emp_cursor;
 LOOP
  FETCH emp_cursor INTO v_empno,v_name,v_job;
  EXIT WHEN emp_cursor%NOTFOUND;
 END LOOP;
 IF emp_cursor%ISOPEN THEN
 DBMS_OUTPUT.PUT_LINE('游標已打開');
 DBMS_OUTPUT.PUT_LINE('讀取了'||emp_cursor%ROWCOUNT||'行');
 ELSE
 DBMS_OUTPUT.PUT_LINE('游標沒有打開');
 END IF; 
 CLOSE emp_cursor;
END;

通過%ISOPEN屬性判斷游標是否打開,%ROWCOUNT判斷獲取行數。

2、隱式游標:由系統定義并為它創建工作區域,并且隱式的定義打開提取關閉,隱式游標的游標名就是'SQL',屬性和顯示游標相同,主要用于對單行select語句或dml操作進行處理。Example:又用戶輸入員工號修改員工工資如成功則打印輸出成功標志。

為了盡量不改變原表,創建新表emp_new和原表數據相同:

CREATE TABLE emp_new
AS
SELECT * FROM emp;
BEGIN
 UPDATE emp_new SET sal = sal+500 WHERE empno=empno;
 IF SQL%FOUND THEN
 DBMS_OUTPUT.PUT_LINE('成功修改');
 COMMIT;
 ELSE
 DBMS_OUTPUT.PUT_LINE('修改失敗');
 ROLLBACK;
 END IF;
END;

這里注意增刪改以后要對做的操作進行commit提交,如果操作失敗則rollback回滾剛才的操作。

3、參數游標:

在定義游標時加入參數的游標,可以配合游標for循環快速找到需要的數據。這里先講一下游標for循環

A、游標FOR循環:

隱含的執行了打開提取關閉數據,代碼精簡很多。Expression:

FOR table_record IN table_cursor LOOP

  STATEMENT;

END LOOP;

Example:使用游標For循環打印輸出員工信息:

DECLARE
CURSOR emp_cursor IS SELECT empno,ename,job FROM emp;
BEGIN
 FOR emp_record IN emp_cursor LOOP
 DBMS_OUTPUT.PUT_LINE('員工號:'||emp_record.empno||'員工姓名'||emp_record.ename||'員工職位'||emp_record.job);
 END LOOP;
END;

這里游標FOR循環省去了對于取到的數據的變量的命名和賦值,同時如果全部打印則不用寫循環條件,代碼精簡了很多。

如果想讓代碼更加精簡,則可以去掉對游標的聲明引入子查詢即可,操作如下。

BEGIN
 FOR emp_record IN (SELECT empno,ename,job FROM emp) LOOP
 DBMS_OUTPUT.PUT_LINE('員工號:'||emp_record.empno||'員工姓名'||emp_record.ename||'員工職位'||emp_record.job);
 END LOOP;
END;

代碼更加精簡,得到的結果相同。和隱式游標是不是有點像,但隱式游標主要用于的是單行select和dml語句的操作,注意2者用法的區別。

下面繼續參數游標的實例:

Example:輸入部門號打印員工信息:

DECLARE
CURSOR emp_cursor(dno NUMBER)IS SELECT empno,ename,job FROM emp WHERE deptno=dno;
BEGIN
 FOR emp_record IN emp_cursor(dno) LOOP
 DBMS_OUTPUT.PUT_LINE('員工號'||emp_record.empno||'姓名'||emp_record.ename||'職位'||emp_record.job);
 END LOOP;
END;

這里既然有參數,那么必然會有對游標的聲明,在結合游標FOR循環快速超找所需要的數據。

三、使用游標修改數據的注意事項

1、使用游標修改數據時,為防止他人在自己操作數據時對數據進行修改,oracle提供for update子句進行加鎖。

同時在你使用update或delete時,必須使用where current of+name_cursor語句,以及在最后記得提交。如果是級聯操作則可以使用for update of 來進行相關表的加鎖。

Example1:對職位是PRESIDENT的員工加1000工資,MANAGER的人加500工資

CREATE TABLE emp_new
AS
SELECT * FROM emp;
DECLARE
CURSOR empnew_cursor IS SELECT ename,job FROM emp_new FOR UPDATE;
BEGIN
 FOR empnew_record IN empnew_cursor LOOP
 DBMS_OUTPUT.PUT_LINE('姓名'||empnew_record.ename||'職位'||empnew_record.job);
 IF empnew_record.job='PRESIDENT' THEN
  UPDATE emp_new SET sal=sal+1000 WHERE CURRENT OF empnew_cursor;
 ELSIF empnew_record.job='MANAGER' THEN
  UPDATE emp_new SET sal=sal+500 WHERE CURRENT OF empnew_cursor;
 END IF;
 END LOOP;
 COMMIT;
END;

可以看到這里工資有了相應的變化。至此,Oracle游標解析完畢,總而言之,游標只是作為我們從數據庫中提取出來的一部分數據,我們針對這個結果集做一系列的操作。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • 詳解Oracle游標的簡易用法
  • Oracle中游標Cursor基本用法詳解
  • 詳解Oracle隱式游標和顯式游標
  • Oracle中的游標和函數詳解
  • Oracle出現超出打開游標最大數的解決方法
  • Oracle顯示游標的使用及游標for循環
  • Oracle存儲過程返回游標實例詳解
  • Oracle 游標使用總結
  • oracle 在一個存儲過程中調用另一個返回游標的存儲過程
  • Oracle游標使用參考語句實例解析

標簽:遼源 涼山 滁州 郴州 焦作 許昌 南充 合肥

巨人網絡通訊聲明:本文標題《Oracle游標的使用實例詳解》,本文關鍵詞  Oracle,游,標的,使用,實例,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle游標的使用實例詳解》相關的同類信息!
  • 本頁收集關于Oracle游標的使用實例詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91精品国产91久久综合桃花| 亚洲欧美激情小说另类| 婷婷中文字幕综合| 国产精品久久综合| av不卡在线播放| 亚洲综合精品自拍| 久久久亚洲午夜电影| 欧日韩精品视频| 国产精品自拍毛片| 一区二区成人在线观看| 2022国产精品视频| 欧美日韩一区二区三区在线| 国产福利91精品一区| 亚洲成av人片一区二区梦乃| 国产精品色一区二区三区| 欧美高清视频一二三区| 91在线云播放| 激情五月婷婷综合网| 亚洲va欧美va国产va天堂影院| 国产日韩欧美精品综合| 欧美成人猛片aaaaaaa| 欧美日韩色一区| 一本色道久久综合亚洲aⅴ蜜桃| 国产精品一区二区黑丝| 久久国产综合精品| 午夜精品国产更新| 亚洲高清免费在线| 亚洲伦理在线精品| 蜜桃av一区二区三区电影| 亚洲一二三四在线| 亚洲主播在线观看| 亚洲国产美女搞黄色| 一区二区视频免费在线观看| 一区二区三区中文字幕精品精品| 国产精品黄色在线观看| 国产精品久久久久久久久果冻传媒 | 精品国产污网站| 欧美一区二区三级| 日韩亚洲欧美高清| 日韩欧美成人激情| 日韩免费看的电影| 日韩亚洲欧美中文三级| 欧美大片在线观看一区二区| 精品国产91九色蝌蚪| 久久久久久久久97黄色工厂| 久久久久久久久一| 亚洲精品videosex极品| 欧美三级视频在线观看| 欧美高清视频在线高清观看mv色露露十八 | 日韩精品综合一本久道在线视频| 91精品免费在线| 成年人国产精品| 欧美日韩亚洲综合在线| 26uuu亚洲综合色欧美 | 欧美男男青年gay1069videost| 欧美日韩成人高清| 2024国产精品| 亚洲二区视频在线| 激情亚洲综合在线| 久久精品一区四区| 91麻豆文化传媒在线观看| 91麻豆精品国产91| 久久综合九色综合97婷婷| 99久久亚洲一区二区三区青草| 久久影视一区二区| 国产成a人亚洲精品| 国产精品美女久久久久久久| gogogo免费视频观看亚洲一| 自拍视频在线观看一区二区| 欧美专区在线观看一区| 奇米影视一区二区三区小说| 久久夜色精品一区| 成人免费视频app| 亚洲综合男人的天堂| 91麻豆精品国产91久久久资源速度 | 国产精品夜夜爽| 国产精品伦理一区二区| 欧美亚洲愉拍一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 91成人看片片| 日韩欧美高清dvd碟片| 亚洲成人免费视| 欧美一级二级在线观看| 国产高清视频一区| 一区二区欧美国产| 亚洲精品一区二区三区在线观看| 成人一道本在线| 日韩有码一区二区三区| 久久精品欧美日韩精品| 91成人在线精品| 国内外精品视频| 一区二区在线观看视频在线观看| 欧美老肥妇做.爰bbww视频| 精品制服美女久久| 亚洲欧美成aⅴ人在线观看| 日韩欧美成人午夜| 91丨九色丨国产丨porny| 美国精品在线观看| 亚洲精品日产精品乱码不卡| 日韩女优视频免费观看| 一本一本大道香蕉久在线精品| 久久成人免费日本黄色| 一区二区欧美国产| 国产亚洲精久久久久久| 欧美日韩一二三区| 成人精品免费看| av在线这里只有精品| 精品一区二区三区免费观看| 国产精品不卡在线| 欧美一区二区三区精品| 成人免费视频caoporn| 青青青伊人色综合久久| 亚洲欧洲综合另类在线| 欧美激情中文不卡| 欧美精品一区二区久久久| 欧美视频在线观看一区二区| av亚洲精华国产精华精| 精品一区二区三区在线播放视频| 亚洲激情五月婷婷| 中文字幕乱码日本亚洲一区二区| 欧美一区二区三区免费在线看| 欧美色图一区二区三区| 成人国产免费视频| 国产成人一区在线| 韩国成人精品a∨在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲一区视频在线| 国产精品久久久久国产精品日日| 久久久久久久久一| 久久久久久毛片| 国产亚洲女人久久久久毛片| 日韩美一区二区三区| 91精品国产丝袜白色高跟鞋| 在线亚洲+欧美+日本专区| 91在线观看一区二区| 北条麻妃一区二区三区| 不卡电影一区二区三区| 成人免费高清在线| 风间由美一区二区三区在线观看| 国产综合久久久久久久久久久久| 国模冰冰炮一区二区| 久久99久久久久| 精品亚洲成a人在线观看| 国产一区在线视频| 丁香网亚洲国际| av在线播放不卡| 91成人免费在线| 欧美日韩国产综合一区二区三区 | 7777精品伊人久久久大香线蕉经典版下载 | 久久66热偷产精品| 亚洲精品在线免费观看视频| 日本韩国视频一区二区| k8久久久一区二区三区 | 99久久综合国产精品| 日韩免费高清视频| 国产视频一区在线观看| 欧美精品日韩一区| 日韩精品一区二区在线| 久久久综合精品| 亚洲视频在线一区二区| 亚洲韩国一区二区三区| 奇米精品一区二区三区四区| 激情久久久久久久久久久久久久久久| 国产精品综合一区二区三区| 成人午夜视频网站| 一本色道久久综合狠狠躁的推荐 | 婷婷亚洲久悠悠色悠在线播放 | 青青草国产成人av片免费| 理论电影国产精品| 不卡av免费在线观看| 色av一区二区| 日韩精品一区二区在线观看| 国产精品妹子av| 亚洲成人免费在线| 懂色av中文字幕一区二区三区| 一本大道久久a久久精品综合| 色噜噜狠狠一区二区三区果冻| 欧美一区二区三区不卡| 中文字幕一区二区在线观看| 午夜久久久久久久久久一区二区| 国产呦萝稀缺另类资源| 色88888久久久久久影院按摩 | 国产一区二区剧情av在线| 97se亚洲国产综合自在线不卡| 911精品国产一区二区在线| 国产三区在线成人av| 亚洲一区在线免费观看| 首页亚洲欧美制服丝腿| 国产欧美日本一区视频| 一区二区三区在线看| 国产另类ts人妖一区二区| 欧美日韩国产bt| 国产精品嫩草影院av蜜臀| 日韩高清在线电影| 91免费观看在线| 久久久亚洲综合| 日本不卡一区二区三区高清视频| va亚洲va日韩不卡在线观看| 2020国产精品| 视频一区二区欧美|