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一区二区
日日碰狠狠添天天爽超碰97| 在线视频观看91| 黄色小视频大全| 青青草原播放器| 午夜xxxxx| 国产精品久久久久久9999| mm1313亚洲国产精品无码试看| 日韩欧美国产免费| 精品少妇人妻av免费久久洗澡| 亚洲五码在线观看视频| 欧美xxxx吸乳| 成人黄色大片网站| 国产成人在线免费看| 免费毛片小视频| 一区二区三区入口| 中文av字幕在线观看| 久久精品国产精品亚洲精品色 | www.18av.com| 国产手机免费视频| 欧美日韩在线中文| 天天插天天操天天射| 香蕉视频色在线观看| 毛片在线视频观看| 免费在线观看毛片网站| 久热精品在线观看视频| 国产精品8888| 国产1区2区在线| 色网站在线视频| 97中文字幕在线| 538在线视频观看| 国产高清免费在线| 日韩av综合在线观看| 精品少妇无遮挡毛片| 中文字幕超清在线免费观看| 成人免费毛片在线观看| 精品久久久99| 日韩激情免费视频| 中国 免费 av| 91n.com在线观看| av日韩在线看| 九九精品久久久| 国模吧无码一区二区三区 | 久久久久久久久久毛片| 欧美性大战久久久久xxx| 国产黑丝在线视频| 亚洲色欲综合一区二区三区| 毛片av在线播放| 日韩欧美中文视频| 国产福利影院在线观看| 欧美一级欧美一级| 成人短视频在线看| www.日本一区| www日韩在线观看| 久久精品国产sm调教网站演员| 欧美专区第二页| 中文字幕资源在线观看| 国产一级特黄a大片免费| 亚洲精品无码久久久久久| wwwwww欧美| 青青草视频国产| 好色先生视频污| 亚洲热在线视频| 九九九九九九九九| 精品综合久久久久| jizz18女人| 99精品视频国产| 亚洲第一精品区| 久久精品一二三四| mm131午夜| 六月婷婷激情综合| 一区二区传媒有限公司| 欧美亚洲国产成人| 欧美日韩中文在线视频| 免费看a级黄色片| 色啦啦av综合| 日韩不卡一二区| 青青在线免费观看| 日韩免费一级视频| 天天干在线影院| 久久精品国产露脸对白| 男人天堂成人网| 麻豆tv在线播放| 精品久久久久久久无码 | 久久久国产精华液999999 | 久久国产精品网| 91视频最新入口| 三级a三级三级三级a十八发禁止| 亚洲一级免费在线观看| www.色就是色.com| 丁香色欲久久久久久综合网| 每日在线观看av| 韩国中文字幕av| 做爰高潮hd色即是空| 日韩国产一级片| 17c国产在线| 国产69精品久久久久999小说| 久久婷婷国产精品| www.51色.com| 9999在线观看| 亚洲人精品午夜射精日韩| 免费大片在线观看| 天天干天天色天天爽| 虎白女粉嫩尤物福利视频| 亚洲天堂国产视频| 免费超爽大片黄| 亚洲xxx在线观看| 国产美女主播在线播放| 亚洲一二三av| 欧美激情国产精品日韩| 黄色www在线观看| 黄色a级片免费| 亚洲色成人www永久在线观看| 亚洲 欧美 另类人妖| 日本a视频在线观看| 天天在线免费视频| 国产三级生活片| 免费观看精品视频| 亚洲精品蜜桃久久久久久| 在线播放av中文字幕| 精品www久久久久奶水| 免费无码毛片一区二三区| а 天堂 在线| 国产三级精品三级在线| 欧美成人黄色网址| 男人天堂1024| 久久久999免费视频| 欧美一级中文字幕| 精品日韩在线播放| 亚洲综合激情五月| 9999在线观看| 日本美女爱爱视频| 超碰免费在线公开| 日韩国产精品毛片| 深夜做爰性大片蜜桃| 在线观看免费黄色片| 99视频在线观看视频| 午夜剧场高清版免费观看| 欧美伦理片在线观看| 欧美大尺度做爰床戏| 国产精品区在线| 久久人人爽人人片| 日韩精品第1页| 日韩xxxx视频| 国产91在线视频观看| 日本久久久精品视频| 99热一区二区| 国产又爽又黄ai换脸| 欧美一二三不卡| 女性女同性aⅴ免费观女性恋 | 日韩手机在线观看视频| 国产欧美高清在线| 在线黄色免费看| 黄色录像特级片| 无码aⅴ精品一区二区三区浪潮| 精品久久久久久久无码 | 国产免费黄色av| 538在线视频观看| 在线a免费观看| 久久国产精品网| 日本黄大片一区二区三区| 成人污网站在线观看| 国产在线播放观看| 别急慢慢来1978如如2| 特黄特黄一级片| 无码aⅴ精品一区二区三区浪潮 | 可以免费看的黄色网址| 国产精品宾馆在线精品酒店| www.成人黄色| 国产欧美高清在线| 国产精品美女在线播放| 日韩视频第二页| 精品国产鲁一鲁一区二区三区| 亚洲av综合色区| 奇米影音第四色| 日韩伦理在线免费观看| 五月天国产视频| 国产真实乱子伦| 久青草视频在线播放| 亚洲a级黄色片| 成人黄色一区二区| 国产精品国产对白熟妇| 欧美日韩理论片| 亚洲免费看av| 黑人糟蹋人妻hd中文字幕| 国产一区二区片| 中文字幕制服丝袜在线| 在线观看国产中文字幕| 波多野结衣乳巨码无在线| 黄网站色视频免费观看| 法国空姐在线观看免费| 中文字幕第17页| 国产探花在线看| 日韩av片网站| 日韩不卡一二三| 中文字幕天天干| 免费精品99久久国产综合精品应用| 青青青在线播放| 高清一区二区视频| 日本a√在线观看| 狠狠干狠狠操视频|