Oracle PL/SQL游標的學習

          一 游標是什么

          游標字面理解就是游動的光標。

          用數據庫語言來描述:游標是映射在結果集中一行數據上的位置實體,有了游標,用戶就可以訪問結果集中的任意一行數據了,將游標放置到某行后,即可對該行數據進行操作,例如提取當前行的數據等。

          二 游標的分類

          顯式游標和隱式游標

          顯式游標的使用需要4步:

          1. 聲明游標

          CURSOR mycur(vartype number) is
                      select emp_no,emp_zc from cus_emp_basic
                      where com_no = vartype;


          2. 打開游標

          open mycur(000627)

          注:000627是參數

          3. 讀取數據

          fetch mycur into varno, varprice;

          4. 關閉游標

          close mycur;

          三 游標的屬性

          oracle 游標有4個屬性:%ISOPEN,%FOUND,%NOTFOUND,%ROWCOUNT。

          %ISOPEN判斷游標是否被打開,如果打開%ISOPEN等于true,否則等于false;

          %FOUND %NOTFOUND判斷游標所在的行是否有效,如果有效,則%FOUNDD等于true,否則等于false;

          %ROWCOUNT返回當前位置為止游標讀取的記錄行數。

          四 示例

          set serveroutput on;
                      declare
                      varno varchar2(20);
                      varprice varchar2(20);
                      CURSOR mycur(vartype number) is
                      select emp_no,emp_zc from cus_emp_basic
                      where com_no = vartype;
                      begin
                      if mycur%isopen = false then
                      open mycur(000627);
                      end if;
                      fetch mycur into varno,varprice;
                      while mycur%found
                      loop
                      dbms_output.put_line(varno||','||varprice);
                      if mycur%rowcount=2 then
                      exit;
                      end if;
                      fetch mycur into varno,varprice;
                      end loop;
                      close mycur;
                      end;


          PL/SQL記錄的結構和C語言中的結構體類似,是由一組數據項構成的邏輯單元。

          PL/SQL記錄并不保存在數據庫中,它與變量一樣,保存在內存空間中,在使用記錄時候,要首先定義記錄結構,然后聲明記錄變量。可以把PL/SQL記錄看作是一個用戶自定義的數據類型。

          set serveroutput on;
                      declare
                      type person is record
                      (
                      empno cus_emp_basic.emp_no%type,
                      empzc cus_emp_basic.emp_zc%type);
                      person1 person;
                      cursor mycur(vartype number)is
                      select emp_no,emp_zc from cus_emp_basic
                      where com_no=vartype;
                      begin
                      if mycur%isopen = false then
                      open mycur(000627);
                      end if;
                      loop
                      fetch mycur into person1;
                      exit when mycur%notfound;
                      dbms_output.put_line('雇員編號:'||person1.empno||',地址:'||person1.empzc);
                      end loop;
                      close mycur;
                      end;

          典型游標for 循環

          游標for循環示顯示游標的一種快捷使用方式,它使用for循環依次讀取結果集中的行數據,當form循環開始時,游標自動打開(不需要open),每循環一次系統自動讀取游標當前行的數據(不需要fetch),當退出for循環時,游標被自動關閉(不需要使用close)。使用游標for循環的時候不能使用open語句,fetch語句和close語句,否則會產生錯誤。

          set serveroutput on;
                      declare
                      cursor mycur(vartype number)is
                      select emp_no,emp_zc from cus_emp_basic
                      where com_no=vartype;
                      begin
                      for person in mycur(000627) loop
                      dbms_output.put_line('雇員編號:'||person.emp_no||',地址:'||person.emp_zc);
                      end loop;
                      end;

          posted on 2009-12-03 22:45 飛熊 閱讀(212) 評論(0)  編輯  收藏 所屬分類: ORACLE

          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永康市| 井研县| 高邑县| 石阡县| 泗洪县| 茂名市| 普兰店市| 自治县| 崇文区| 濮阳县| 博白县| 泸州市| 古丈县| 乐业县| 佛冈县| 隆昌县| 平原县| 新邵县| 青阳县| 屏边| 鹿邑县| 即墨市| 宝坻区| 攀枝花市| 古浪县| 东莞市| 原平市| 肇庆市| 澳门| 囊谦县| 玛纳斯县| 蓝山县| 太和县| 岐山县| 杭锦旗| 宁德市| 云梦县| 汉源县| 平乐县| 蓬溪县| 湘阴县|