成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

什么是oracle游標

在Oracle中,游標是一種機制,是通過關鍵字CURSOR的來定義一組Oracle查詢出來的數據集,可以把查詢的數據集存儲在內存當中,然后通過游標指向其中一條記錄,通過循環游標達到循環數據集的目的。

什么是oracle游標

本教程操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。

在Oracle中,游標(Cursors)是一種機制,可以通過該機制將名稱分配給SELECT語句并處理該SQL語句中的信息。

Oracle游標是通過關鍵字CURSOR的來定義一組Oracle查詢出來的數據集,類似數組一樣,把查詢的數據集存儲在內存當中,然后通過游標指向其中一條記錄,通過循環游標達到循環數據集的目的。

游標有什么作用?

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

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

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

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

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

Oracle游標的類型?

1、靜態游標:結果集已經確實(靜態定義)的游標。分為隱式和顯示游標

  • 隱式游標:所有DML語句為隱式游標,通過隱式游標屬性可以獲取SQL語句信息。

  • 顯示游標:用戶顯示聲明的游標,即指定結果集。當查詢返回結果超過一行時,就需要一個顯式游標。

2、REF游標:動態關聯結果集的臨時對象。

Oracle游標的狀態有哪些,怎么使用游標屬性?

①游標的狀態是通過屬性來表示。

  • %Found :Fetch語句(獲取記錄)執行情況True or False。

  • %NotFound : 最后一條記錄是否提取出True or False。

  • %ISOpen : 游標是否打開True or False。

  • %RowCount :游標當前提取的行數 。

②使用游標的屬性。

例子:

/* conn scott/tiger */   Begin    Update emp Set  SAL = SAL + 0.1  Where JOB = 'CLERK';    If  SQL%Found  Then     DBMS_OUTPUT.PUT_LINE('已經更新!');    Else     DBMS_OUTPUT.PUT_LINE('更新失?。?#39;);    End  If;   End;

如何使用顯示游標,?如何遍歷循環游標?

1、使用顯示游標

  • 聲明游標:劃分存儲區域,注意此時并沒有執行Select 語句。

CURSOR 游標名( 參數 列表)   [返回值類型]   IS   Select 語句;
  • 打開游標:執行Select 語句,獲得結果集存儲到游標中,此時游標指向結果集頭, 而不是第一條記錄。

 Open 游標名( 參數 列表);
  • 獲取記錄:移動游標取一條記錄

Fetch  游標名InTo  臨時記錄或屬性類型變量;
  • 關閉游標:將游標放入緩沖池中,沒有完全釋放資源??芍匦麓蜷_。

Close  游標名;

2、遍歷循環游標

  • For 循環游標

循環游標隱式打開游標,自動滾動獲取一條記錄,并自動創建臨時記錄類型變量存儲記錄。處理完后自動關閉游標。

     For  變量名  In  游標名       Loop       數據處理語句;      End Loop;
  • Loop循環游標

     。。。     Loop      Fatch  游標名InTo  臨時記錄或屬性類型變量;      Exit  When   游標名%NotFound;     End   Loop;      。。。

例子1:

/* conn scott/tiger */    Declare      Cursor myCur is select empno,ename,sal from emp;      vna varchar2(10);      vno number(4);      vsal number(7,2);   Begin      open myCur;      fetch myCur into vno,vna,vsal;      dbms_output.put_line(vno||'    '||vna||'    '||vsal);      close myCur;   End;   /

例子2:使用loop遍歷游標。

 /* conn scott/tiger */   Declare      Cursor myCur is select ename,job,sal,empno from emp;      varE myCur%rowType;   Begin      if myCur%isopen = false then         open myCur;        dbms_output.put_line('Opening...');      end if;      loop         fetch myCur into varE;         exit when myCur%notfound;         dbms_output.put_line(myCur%rowCount||'    '||vare.empno||'    '||vare.ename||'    '||vare.sal);      end loop;      if myCur%isopen then         Close myCur;         dbms_output.put_line('Closing...');      end if;   End;   /

例子3:使用For循環遍歷游標,

  /* conn scott/tiger */   Declare      Cursor myCur is select * from emp;   Begin      for varA in myCur       loop          dbms_output.put_line(myCur%rowCount||'    '||varA.empno||'    '||varA.ename||'  '||varA.sal);       end loop;   End;   /

怎樣更新和刪除顯示游標中的記錄?

①UPDATE或DELETE語句中的WHERE CURRENT OF子串專門處理要執行UPDATE或DELETE操作的表中取出的最近的數據。

要使用這個方法,在聲明游標時必須使用FOR UPDATE子串,當對話使用FOR UPDATE子串打開一個游標時,

所有返回集中的數據行都將處于行級(ROW-LEVEL)獨占式鎖定,其他對象只能查詢這些數據行,

不能進行UPDATE、DELETE或SELECT…FOR UPDATE操作。

在多表查詢中,使用OF子句來鎖定特定的表,如果忽略了OF子句,那么所有表中選擇的數據行都將被鎖定。

如果這些數據行已經被其他會話鎖定,那么正常情況下ORACLE將等待,直到數據行解鎖。

②使用更新或刪除:

⑴聲明更新或刪除顯示游標:

   Cursor 游標名IS  SELECT 語句   For Update [ Of  更新列列名];    Cursor 游標名IS  SELECT 語句   For Delete [ Of  更新列列名];

⑵使用顯示游標當前記錄來更新或刪除:

   Update  表名   SET   更新語句  Where   Current  Of   游標名;    Delete  From  表名   Where   Current  Of   游標名;

例子1:更新顯示游標記錄

   /*conn scott/tiger*/    Declare      Cursor myCur is select job from emp for update;        vjob empa.job%type;        rsal empa.sal%type;     Begin        open myCur;        loop           fetch myCur into vjob;           exit when myCur%notFound;           case  (vjob)              when 'ANALYST' then  rsal := 0.1;             when  'CLERK' then  rsal := 0.2;              when  'MANAGER' then  rsal := 0.3;              else                rsal := 0.5;           end case;         update emp set sal = sal + rsal where current of myCur;        end loop;     End;     /

例子2:刪除顯示游標記錄

    /*conn scott/tiger     Crate table  empa  Select * from scott.emp;     */     Declare       Cursor MyCursor  Select   JOB  From  empa  For  Update;       vSal   emp.Sal%TYPE;     Begin       Loop        Fetch  MyCursor  InTo  vSal;        Exit  When  MyCursor%NotFound;        If   vSal < 800 Then         Delete  From empa  Where  Cursor  Of   MyCursor;        End  If;         End    Loop;     End;/

什么是帶參數的顯示游標?

1、與過程和函數相似,可以將參數傳遞給游標并在查詢中使用。

參數只定義數據類型,沒有大小(所有Oracle中的形參只定義數據類型,不指定大小)。

與過程不同的是,游標只能接受傳遞的值,而不能返回值。

  可以給參數設定一個缺省值,當沒有參數值傳遞給游標時,就使用缺省值。

游標中定義的參數只是一個占位符,在別處引用該參數不一定可靠。

2、使用帶參數的顯示游標

  • 聲明帶參數的顯示游標:

   CURSOR 游標名  [(parameter[,parameter],...)]    IS   Select語句;

參數形式:

1,參數名 數據類型

2,參數名 數據類型 DEFAULT 默認值

例子:

    /*conn scott/tiger     Crate table  empa  Select * from scott.emp;     */     Declare       Cursor MyCursor(pSal  Number  Default   800)  Select   JOB  From  empa Where  SAL >  pSal ;       varA  MyCursor%ROWTYPE;     Begin       Loop        Fetch  MyCursor  InTo  varA;        Exit  When  MyCursor%NotFound;        DBMS_OUTPUT.PUT_LINE(MyCursor%RowCount||'    '||varA.empno||'    '||varA.ename||'  '||varA.sal);        End    Loop;     End;/

推薦教程:《Oracle教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
青青草无码精品伊人久久| 满熟妇XXXX性久久9久久| 村长趴在小雪身上耕耘视频| 人妻少妇精品视频专区| 久久精品国产导航| 国产内射合集颜射| 岛国精品一区免费视频在线| 99精产国品一二三产| 野花社区WWW高清图片| 亚洲AV无码无在线观看红杏| 特级小箩利无码毛片| 强开小婷嫩苞又嫩又紧视频韩国| 久久中文字幕无码专区| 极品女教师波多野结衣电影衣| 国产精品久久久久久吹潮| 东京热人妻丝袜AV无码| 成 人免费 在线手机版视| BBBBB毛茸茸BBBBBBB| 97国产精华液哪个品牌比较好贵| 伊人久久精品亚洲午夜| 亚洲人成伊人成综合网久久久| 亚洲AV无码专区青青草原| 性ⅩXXX搡XXXX搡| 玩弄粉嫩少妇高潮出白浆AⅤ| 日韩欧美视频一区二区| 日韩AV无码中文无码不卡电影| 欧美胖老太牲交XXⅩXXX| 女人越喊男人越往里寨电视剧| 免费A级毛片在线播放| 麻花豆传媒剧国产MV免费天美| 欧美最婬乱婬爆婬牲视 | 我和公GONG在厨房日本电影| 亚洲国产精品成人精品无码区| 亚洲 欧美 叧类人妖| 性欧美长视频免费观看不卡| 尤物娇妻被NP高H| 中文字幕丰满乱子伦无码专区| 又硬又大又长又粗又深| 伴郎粗大的内捧猛烈进出视频观看| YY8090理论三级在线观看| 白人极品少妇XXXⅩ做受| 被三个男人躁一夜好爽小说| 波多野结衣无内裤护士| 国产又爽又黄又无遮挡的激情视频| 国产日产欧洲系列| 护士被弄到高潮喷水抽搐| 精品熟女少妇AV免费久久| 久久久久久精品免费免费| 麻豆E奶女教师国产精品| 免费又黄又爽又猛的毛片| 欧洲VODAFONEWIFI喷| 午夜私人理论电影| 亚洲精品无码久久久久苍井空 | 国内精品伊人久久久影视| 国产无遮挡无码很黄很污很刺激 | 成人女人爽到高潮的Av在线| 高潮VPSWINDOWS国产乱| 国产精品毛多多水多| 麻豆三级电影无码| 无码午夜福利视频一区| 亚洲国产成人无码AV在线| YY8098影视理论无码专区| 禁18在线观看免费网站| 日本无遮挡吸乳视频| 我的妈妈和黑人群交小说| 中文字幕爆乳JULIA女教师| 国产乱妇乱子视频在播放| 精品国产乱码久久久久久蜜桃网站 | 国产午夜男女爽爽爽爽爽| 精品久久久无码中文字幕一丶| 久久综合伊人77777| 欧美黑人ⅩXXX猛交| 日日摸夜夜摸狠狠摸婷婷| 性 偷窥 间谍 tube| JAGNEXSMAX在日本| 国产精品久久久久久久久KTV| 蜜臀AV福利无码一二三| 日本人妻熟妇BBBBB| 性欧美VIDEO高清| www.性xxxxx| 国产区在线观看成人精品| 欧美熟妇SEXFREE| 透明奶罩的邻居三级在线观看| 亚洲AV一二三区成人影片| 成人精品一区二区www| 韩国青草无码自慰直播专区| 免费看黑人强伦姧人妻| 亚洲不卡无码AV中文字幕| 18成禁人视频免费网站| 丰满人妻视频一区二区三区| 精品国产乱码久久久久夜深人妻| 熟妇高潮精品区一区二区三| 亚洲一区二区三区无码中文字幕| 扒开校花的粉嫩小泬| 开心久久婷婷综合中文字幕| 性少妇JEAⅠOUSVU片| 丰满人妻熟妇乱偷人无码出轨| 欧美精品中文字幕亚洲专区| 一个吃我奶头两个舔我下面| 岛国精品一区免费视频在线观看| 女人18毛片A级女人18水真多| 亚洲日韩国产一区二区三区| 国产三级在线观看播放| 少妇泬出白浆18P| 野花香视频免费观看| 大帝AV在线一区二区三区| 欧美老熟妇欲乱高清视频| 正文畸情~内裤奇缘小说| 国产精品国产三级国AV| 免费久久人人爽人人爽AV| 亚洲中文无码MV| 干了快生了的孕妇| 人人妻人人爽人人澡AV| 亚洲色婷婷一区二区三区| 粗大挺进亲女H顾晓晓| 人妻多毛丰满熟妇av无码| 99无人区码一码二码三码四 | 差差差很疼视频30分钟应用| 欧美日韩一区二区三区精品视频在线| 中国熟妇毛多多裸交视频| 国产熟妇XXXXXⅩ性Ⅹ交| 无码AV最新高清无码专区| 40岁的寡妇下面紧不紧| 韩国办公室三级HD激情在线观看| 污污污污污WWW网站免费| 国产成人无码AV在线播放DVD| 男人j捅进女人p| 亚洲AV免费高潮喷水| 波多野结衣系列18部无码观看A| 欧美人与动牲交A欧美精品| 99热这里有精品| 欧亚尺码专线欧洲B1B1| SEERX性欧美| 日本精品VIDEOSSEX 黑| 成人精品免费AV不卡在线观看 | 性丰满ⅩXXOOOZZXXHD| 国产精品亚洲综合色区韩国| 小婷又软又嫩又紧水又多的视频| 国产精品天干天干在线观看| 人妻少妇乱子伦精品无码专区毛片 | 把腿张开老子臊烂你的小说 | 免费中文无码AV动作片| 97久人人做人人妻人人玩精品| 欧美日本国产VA高清CABAL| 阿公抱着我边摸边吃奶视频| 巨大黑人XXXXX高潮后处理| 又大又黄又爽视频一区二区| 妺妺窝人体色WWW人体色| AV无码小缝喷白浆在线观看| 久久无码专区国产精品S| 小宝贝下面的小嘴流水了| 国内盗摄视频一区二区三区| 丝袜灬啊灬快灬高潮了AV| 锕锕锕锕锕锕锕锕好疼小视频软件| 人妻精品无码一区二区三区 | 日日摸日日踫夜夜爽无码| 国产高颜值大学生情侣酒店| 日本大胆欧美人术艺术| 综合成人亚洲偷自拍色| 九月婷婷人人澡人人添人人爽| 无码专区一VA亚洲V天堂| 韩国18禁电影风暴尺度大| 亚洲人成自拍网站在线观看| 蜜臀色欲AV在线播放国产日韩| XX娇小嫩XX中国XX| 天堂BT种子资源在线WWW| 恶毒美人长批后被宿敌爆炒了| 无码精品人妻一区二区三区涩爱 | 亚洲人成网站观看在线播放| 麻豆国产成人AV在线播放欲色| JAPANESEHD日本乱厨房| 视频在线观看一区二区| 狠狠综合久久狠狠88亚洲| 中文字幕无码成人免费视频 | 亚洲精品无码不卡在线播HE| 老司机在线精品视频网站| 亚洲日本乱人伦片中文| 男人边吃奶边做呻吟免费视频 | 精品三级久久久久电影我网| 中文字幕亚洲综合久久蜜桃| 日韩人妻无码视频| 好爽好大再深点高H免费观看| 中国少妇无码专区| 少妇人妻系列1~100| 精品一区二区三区在线成人| CSGO高清大片视频| 五月丁香六月缴情基地| 国产午夜成人免费看片| 影音先锋女人AV鲁色资源网久久| 秋霞网一区二区三区| 国产又大又粗又黄又爽白丝| 中文字幕精品无码| 挽起裙子跨开双腿坐下去软件| 久久久橹橹橹久久久久高清| 伊人伊成久久人综合网| 日产精品码2码三码四码区| 精产一二三产区区别在哪| JAPANESE人妻少妇HD| 亚洲AV无码久久精品色欲| 欧美少妇XXXXX|