gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

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

什么是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('更新失敗!');    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號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
欧美国产激情视频| 国产精品久久久久9999爆乳| 亚洲乱码日产精品bd在线观看| 亚洲中文字幕无码专区| a级网站在线观看| 视频区 图片区 小说区| 精品久久久久av| 国产第一页视频| 91淫黄看大片| 九色porny自拍| 色婷婷综合网站| 天天摸天天舔天天操| 亚洲免费成人在线视频| 亚洲综合欧美在线| 在线无限看免费粉色视频| 小泽玛利亚视频在线观看| 911福利视频| 超碰97免费观看| 青青青在线观看视频| 欧美综合在线播放| 超碰网在线观看| 在线观看免费污视频| 日日噜噜噜夜夜爽爽| 裸体裸乳免费看| jizzjizzxxxx| 中文字幕天天干| 日韩精品第1页| 国产精品无码av在线播放| 一女被多男玩喷潮视频| 激情综合网俺也去| 免费成人黄色大片| 91黄色在线看| 午夜精品久久久内射近拍高清| 九热视频在线观看| www.国产二区| 欧美一级黄色片视频| 亚洲欧美一区二区三区不卡| 无码熟妇人妻av在线电影| 日本欧美黄色片| 亚洲欧美视频二区| 亚洲一区二区三区av无码| 天天爱天天操天天干| 天堂av在线中文| 91香蕉视频导航| 国产精品一区二区免费在线观看| 免费看a级黄色片| 中国一级黄色录像| 蜜臀久久99精品久久久酒店新书| 一级黄色录像免费看| 国模无码视频一区二区三区| 另类小说色综合| 成 年 人 黄 色 大 片大 全| 一女二男3p波多野结衣| 久久这里只有精品23| 天天操精品视频| 亚洲欧美国产日韩综合| 欧美大片在线播放| 免费在线黄网站| 裸体裸乳免费看| 三年中文高清在线观看第6集| 无码内射中文字幕岛国片| www国产精品内射老熟女| avove在线观看| 欧美在线aaa| 亚洲成人福利在线观看| 日本中文字幕片| 每日在线更新av| 无码 制服 丝袜 国产 另类| 一级片免费在线观看视频| 九色porny自拍| 一区二区在线免费看| 激情婷婷综合网| 黄色成人免费看| 亚洲欧美视频二区| 手机精品视频在线| 自拍一级黄色片| 久久精品在线免费视频| 一区二区三区四区毛片| 日韩av.com| 国产农村妇女精品久久| av动漫在线免费观看| 亚洲热在线视频| 黄色影视在线观看| 国产1区2区3区中文字幕| 超碰人人爱人人| 国产免费观看高清视频| 91香蕉视频污版| 国产又粗又长又爽又黄的视频| 亚洲热在线视频| 9色porny| 亚洲 欧美 日韩 国产综合 在线| 国产主播在线看| 午夜免费看视频| 精品少妇人妻av一区二区| 大荫蒂性生交片| 国产最新免费视频| 精品日韩久久久| 女人被男人躁得好爽免费视频| 自拍日韩亚洲一区在线| 老熟妇仑乱视频一区二区| 免费在线观看污网站| 国产又粗又猛又爽又黄的网站| www.日本在线播放| jizz欧美性11| 国产v片免费观看| 亚洲最大天堂网| 免费在线观看视频a| 亚洲综合伊人久久| 久章草在线视频| 少妇一晚三次一区二区三区| 国产在线精品91| 一级一片免费播放| wwwwww.色| 欧美一级视频免费看| 一女二男3p波多野结衣| 97超碰青青草| 97视频在线免费| 亚洲免费黄色网| 日韩av在线第一页| 亚洲色成人www永久在线观看| 亚洲欧美aaa| 国内外免费激情视频| 99国产精品白浆在线观看免费| 超碰人人草人人| av片中文字幕| 91免费视频网站在线观看| 福利片一区二区三区| 日本激情视频在线| 欧美极品欧美精品欧美| 国产曰肥老太婆无遮挡| 7777在线视频| 深爱五月综合网| 搡的我好爽在线观看免费视频| 久久美女福利视频| 男人插女人视频在线观看| 欧美xxxx吸乳| 久久av高潮av| 欧美精品卡一卡二| 国产成a人亚洲精v品在线观看| 欧美少妇一级片| 国产一级大片免费看| 黄色片免费在线观看视频| 特级西西人体www高清大胆| 欧美日韩亚洲国产成人| 99热一区二区三区| 超薄肉色丝袜足j调教99| 成年人网站av| 天天做天天躁天天躁| 亚洲 欧美 综合 另类 中字| av一区二区三区免费观看| 97超碰在线人人| 蜜臀av午夜一区二区三区 | 免费在线激情视频| 日本三级免费观看| 欧美一级黄色影院| 天美一区二区三区| av 日韩 人妻 黑人 综合 无码| 日韩一级特黄毛片| 免费在线观看视频a| 久久久久狠狠高潮亚洲精品| 91色国产在线| 国产内射老熟女aaaa| 国产综合中文字幕| 婷婷激情四射五月天| 中文字幕剧情在线观看| av 日韩 人妻 黑人 综合 无码| 欧美成人免费在线观看视频| 一道本视频在线观看| 国产又黄又爽免费视频| 波多野结衣家庭教师在线| 欧美精品久久久久久久久25p| 丰满人妻一区二区三区53号| 日本一本二本在线观看| 黄色网址在线免费看| 黄色一级大片在线观看| 中文字幕黄色大片| 国产福利一区视频| av在线观看地址| 五月天国产视频| 亚洲色精品三区二区一区| 浴室偷拍美女洗澡456在线| 欧美精品第三页| 欧美亚洲色图视频| 日韩av一卡二卡三卡| 国产91美女视频| 成人免费a级片| 五月天男人天堂| 一区二区三区免费播放| 福利视频一区二区三区四区| 国产三级生活片| 波多结衣在线观看| 99久久国产宗和精品1上映| 国产美女在线一区| 手机在线免费毛片| 亚洲妇熟xx妇色黄蜜桃| 91日韩视频在线观看| 午夜肉伦伦影院| 日本精品免费在线观看| 黄色大片在线免费看| 91午夜在线观看|