<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Oracle PL/SQL游標的學習

    Posted on 2009-06-18 14:11 林光炎 閱讀(597) 評論(0)  編輯  收藏 所屬分類: ORACLE
    一 游標是什么

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

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

    二 游標的分類

    顯式游標和隱式游標

    顯式游標的使用需要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;

    posts - 104, comments - 33, trackbacks - 0, articles - 0

    Copyright © 林光炎

    主站蜘蛛池模板: 最新亚洲卡一卡二卡三新区| 亚洲精品线在线观看| 亚洲国产成人久久精品软件| 免费精品国产自产拍在| 亚洲福利秒拍一区二区| 黄色成人免费网站| 亚洲一级黄色大片| 成人免费淫片在线费观看| 亚洲人成色77777在线观看| 大地资源免费更新在线播放| 亚洲日韩AV一区二区三区中文| 好男人视频在线观看免费看片| 亚洲av无码专区首页| 亚洲Aⅴ无码一区二区二三区软件| 午夜成人无码福利免费视频| 亚洲人成网站在线播放vr| 免费精品一区二区三区第35 | 国产一区二区三区无码免费| 美女视频黄频a免费| 国产成人综合亚洲AV第一页| 在线观看人成视频免费无遮挡| 亚洲国产精品无码AAA片| 99精品视频免费观看| 亚洲色大成WWW亚洲女子| 亚洲av无码国产精品色在线看不卡| 国产免费MV大全视频网站| 亚洲国产精品无码AAA片| 99久久99这里只有免费费精品| 亚洲youwu永久无码精品| 国产亚洲精品无码拍拍拍色欲| 99精品一区二区免费视频| 亚洲综合无码无在线观看| 亚洲阿v天堂在线2017免费| 国产麻豆成人传媒免费观看| 亚洲综合中文字幕无线码| 亚洲第一黄色网址| 美丽的姑娘免费观看在线播放| 亚洲欧美日韩国产精品一区| 亚洲中文字幕不卡无码| 99热在线精品免费全部my| 本道天堂成在人线av无码免费|