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一区二区
手机av在线网站| 日韩精品一区二区三区四| 久久这里只有精品8| 91 视频免费观看| 亚洲熟妇av一区二区三区| 日韩精品一区二区在线视频| 国产一区二区在线观看免费视频| 激情综合网婷婷| 日韩精品视频久久| 1024av视频| 日韩a∨精品日韩在线观看| 黑人巨茎大战欧美白妇| 亚洲男人天堂2021| 99中文字幕在线| 肉色超薄丝袜脚交| 天天av天天操| 亚洲视频在线不卡| 中文字幕在线视频一区二区三区| 在线观看日本一区二区| 狠狠干狠狠操视频| 免费成年人高清视频| 尤物国产在线观看| 四虎成人在线播放| 精品一区二区成人免费视频 | 日韩中文字幕在线不卡| 欧美h视频在线观看| 可以免费看的黄色网址| 黄频视频在线观看| 国产成人亚洲综合无码| 国产精品8888| 真人抽搐一进一出视频| 国产伦精品一区二区三区四区视频_| 精品久久久久久无码中文野结衣| 被灌满精子的波多野结衣| 精品这里只有精品| 黄色三级视频在线| 一级片黄色免费| www.国产在线播放| 国产中文字幕在线免费观看| 国产97色在线 | 日韩| 小泽玛利亚视频在线观看| www.偷拍.com| www精品久久| 国产又粗又长又大的视频| 伊人五月天婷婷| 你真棒插曲来救救我在线观看| 日韩精品视频一区二区在线观看| jizz大全欧美jizzcom| www亚洲国产| 91精品91久久久中77777老牛| 日韩毛片在线免费看| 国产无遮挡猛进猛出免费软件| 成人区一区二区| 自拍偷拍 国产| 久久观看最新视频| 国产性xxxx18免费观看视频| 中文字幕12页| 欧美黄色免费影院| 艳母动漫在线免费观看| 日韩av在线综合| 影音先锋成人资源网站| 国产免费视频传媒| 天堂а√在线中文在线| 99热这里只有精品在线播放| 久无码久无码av无码| 午夜精品免费看| 日韩欧美国产综合在线| 99久久99精品| 免费看黄色一级大片| 日韩欧美猛交xxxxx无码| 日本中文字幕影院| 国模吧无码一区二区三区| 喜爱夜蒲2在线| 黄色小视频免费网站| 成年人午夜视频在线观看| 亚洲色图欧美自拍| 91av俱乐部| 日本丰满少妇xxxx| 国产制服91一区二区三区制服| 污视频网站观看| 黑人糟蹋人妻hd中文字幕| 欧美国产视频一区| 男人j进女人j| 在线观看免费av网址| 黄色国产精品视频| 久草视频国产在线| 小泽玛利亚av在线| 青青草影院在线观看| www.51色.com| 在线观看免费视频污| 日本激情视频在线播放| 黄色片在线免费| 色诱视频在线观看| 成人午夜视频免费在线观看| 狠狠干 狠狠操| 僵尸世界大战2 在线播放| 91成人综合网| 天堂8在线天堂资源bt| 51xx午夜影福利| 日韩一级特黄毛片| 国产又爽又黄ai换脸| 午夜激情视频网| 免费网站在线观看黄| 日本在线观看视频一区| 91日韩精品视频| 色爽爽爽爽爽爽爽爽| 99精品一级欧美片免费播放| 五月天在线免费视频| 神马午夜伦理影院| 欧美另类videos| 无码 制服 丝袜 国产 另类| 日本xxxxxxxxxx75| 欧美 激情 在线| 日本肉体xxxx裸体xxx免费| 日本三级黄色网址| 国产免费色视频| 丁香六月激情网| 欧美性潮喷xxxxx免费视频看| 久久久性生活视频| av免费中文字幕| 亚洲va综合va国产va中文| 国产精品h视频| 欧美一级欧美一级| 北条麻妃av高潮尖叫在线观看| 91精品无人成人www| 欧美日韩亚洲国产成人| 欧美人成在线观看| 91国产精品视频在线观看| 日本高清免费观看| 蜜臀av色欲a片无码精品一区| 国产精品69页| 18视频在线观看娇喘| 国产精品沙发午睡系列| www.久久av.com| 久在线观看视频| 可以看污的网站| 无码粉嫩虎白一线天在线观看| 欧美视频第三页| 善良的小姨在线| 国产v亚洲v天堂无码久久久| 一级全黄肉体裸体全过程| 国产精品视频一区二区三区四区五区| 亚洲精品手机在线观看| 久久亚洲精品无码va白人极品| 亚洲最大综合网| 2018日日夜夜| 五月六月丁香婷婷| 97成人在线观看视频| 天天爱天天做天天操| 999在线免费视频| 国产午夜精品视频一区二区三区| 热久久精品免费视频| www.男人天堂网| www.久久久久久久久久久| 亚洲熟妇av日韩熟妇在线 | 欧美日韩在线观看不卡| 国产肉体ⅹxxx137大胆| а 天堂 在线| 免费一级特黄录像| 日本一区二区黄色| 日韩精品在线观看av| 992kp免费看片| 中文字幕第100页| 日本一极黄色片| 91猫先生在线| 欧美图片激情小说| 国产精品无码乱伦| 日韩av.com| 中文字幕在线视频精品| 日韩av片网站| 男人插女人下面免费视频| 国产91xxx| 国产精品网站免费| 久久这里只有精品18| 国产 国语对白 露脸| 成人短视频在线看| 91精品国产三级| 中文字幕第66页| 日日夜夜精品视频免费观看| 亚洲精品20p| 伊人色在线观看| 亚洲精品mv在线观看| 三级性生活视频| 91大神免费观看| www.-级毛片线天内射视视| 在线观看av免费观看| 婷婷激情小说网| 好色先生视频污| 免费的一级黄色片| 欧美极品少妇无套实战| 国产一区二区三区乱码| 777777av| 欧美一级片中文字幕| 成人性生生活性生交12| 手机视频在线观看| 涩多多在线观看| 欧洲精品在线播放| 日韩av一二三四区| 亚洲一区二区蜜桃| 成人高清在线观看视频|