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

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

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

    本站不再更新,歡迎光臨 java開發技術網
    隨筆-230  評論-230  文章-8  trackbacks-0

    SQL%FOUND 指明insert ,update或delete是否影響到行
    SQL%ISOPEN 指明游標是否打開,這個值在隱式游標中永遠為false,因為隱式游標在DML語句執行后自動關閉
    SQL%NOTFOUND? 表示DML語句在修改行的是候是否失敗了
    SQL%ROWCOUNT 指明DML語句影響到的行數

    游標變量就是一個PL/SQL變量,你可以在運行時針對不同的查詢使用該變量同一游標變量能指行不同的工作區

    游標變量的定義包括兩個步驟:
    1 定義CURSOR類型的指針
    ? 在pl/SQL中,使用下面語法定義CURSOR類型的指針
    ? ref type
    ? 如
    ? TYPE rc IS REF CURSOR
    2 定義REF CURSOR 類型的變量
    ? v_rc rc
    ? 完整的聲明游標變量方法如下:
    ? type rc is ref cursor;
    ? v_rc rc;

    這樣定義的游標類型叫弱類ref curosr 類型 ,這是因為沒指明游標的返回類型,因此它能指向任何一個具有任意多列的select 查詢。
    定義帶有返回類型的強ref cursor 類型
    type ref_type_name is ref cursor return return_type;

    type rc is ref cursor return hrc_tab%rowtype;
    v_rc rc;
    游標變量的使用
    ?1) 分配內存
    ?2) 為查詢打開游標變量
    ?3) 把結果取到pl/sql記錄中
    ?4) 關閉游標變量


    1 分配內存
    ?? 在pl/sql中聲明游標變量后,pl/sql引擎會自動為期分配存儲數據行的內存空間
    2 打開游標
    ? open?? 游標變量名 fro select_query
    3 把結果取到pl/sql記錄或單獨pl/sql變量中? fetch cursor_variable_name into var1,var2

    ?fetch?? cursor_variable_name into table_name%rowtype;

    4 關閉游標變量
    ? close? cursor_variable_name

    一個例子
    declare
    ?type rc is ref cursor ;
    ?v_rc rc;
    ?v_rc2 rc;
    ?hrc_rec hrc_tab%rowtype;
    begin
    ? open v_rc for select * form hrc_tab;
    ? v_rc2:=vrc;
    loop
    ? fetch v_rc into hrc_rec;
    ? exit when v_rc%nofound;
    ? dbms_output.put_line();
    end loop;?
    close v_rc;?
    end;
    注意:當關閉v_rc的同時也會關閉v_rc2,反之亦然。為一個游標變量簡單的賦上一個已經打開的游標變量值,實際上是一個游標指向另一個工作區。不要把一個沒打開的游標變量賦值給另一個游標變量,那樣會出現invalid_cursor錯誤
    游標變量也有4個屬性curosr_variable_name%ISOPEN,curosr_variable_name%FOUND,curosr_variable_name%NOTFOUND,curosr_variable_name%ROWCOUNT
    使用的辦法和普通游標一樣。

    游標的高級功能

    使用游標變量真正的好處是必須使用同一個游標變量打開多個查詢,或根據運行時的條件需要動態的把不同的
    查詢賦給相同的游標變量時體現。

    使用同一游標變理打開多個查詢

    ?declare
    ?type rc is ref cursor ;
    ?v_rc rc;
    ?v_rc2 rc;
    ?hrc_rec hrc_tab%rowtype;
    begin
    ? open v_rc for select * form hrc_tab;
    ? v_rc2:=vrc;
    loop
    ? fetch v_rc into hrc_rec;
    ? exit when v_rc%nofound;
    ? dbms_output.put_line();
    end loop;?
    ?open v_rc for select * from hrc_tab where class_id='55';
    loop
    ? fetch v_rc into hrc_rec;
    ? exit when v_rc%nofound;
    ? dbms_output.put_line();
    end loop;?
    close v_rc;?
    end;

    兩個地方值得注意:
    ?同一游標變量v_rc指向兩個不同的查詢
    ?第一個查詢打開v_rc并取得值后,v_rc并沒有立即關閉,它只是簡單地為第二個查詢重新打開一次,一個新
    的結果值就確定下來


    -===========================------
    游標表達式
    使用游標表達式的原因:使用游標表這式可以避免聲明和使用多個游標這種復雜的使用方法,因此它能通過
    SQL引擎產生更加優化的解決方案,之所以如此,是由于游標表達式相對于多個游標使用多個SQL語句來說,它只使用了一個SQL語句。還有oracle9i中解除了嵌入到pl/sql代碼的的SQL中使用游標表達式的限制。,現在可以把游標表達式作為PL/SQL游標的一部分使用

    ?

    ?

    ?


    ?

    posted on 2006-09-12 10:18 有貓相伴的日子 閱讀(1248) 評論(1)  編輯  收藏 所屬分類: pl/sql

    評論:
    # re: 游標變量和隱藏游標 2008-04-15 10:44 | zhangyc
    thanks  回復  更多評論
      
    本站不再更新,歡迎光臨 java開發技術網
    主站蜘蛛池模板: 女性自慰aⅴ片高清免费| 成年人在线免费观看| 亚洲熟妇少妇任你躁在线观看无码| 亚洲中文无码永久免费| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 黄色一级毛片免费| 四虎免费永久在线播放| 免费毛片毛片网址| 国产成人亚洲精品影院 | 最近免费中文字幕高清大全| 久久av无码专区亚洲av桃花岛| 久久成人a毛片免费观看网站| 337p日本欧洲亚洲大胆色噜噜| ww在线观视频免费观看| 亚洲日本人成中文字幕| 国产精品jizz在线观看免费| 一级毛片免费播放试看60分钟| 久久亚洲国产午夜精品理论片| 免费无码中文字幕A级毛片| 亚洲沟沟美女亚洲沟沟| 日本不卡在线观看免费v| 人碰人碰人成人免费视频| 亚洲Av无码精品色午夜| 免费大片黄在线观看yw| 无人视频在线观看免费播放影院 | 2020年亚洲天天爽天天噜| 免费国内精品久久久久影院| EEUSS影院WWW在线观看免费| 亚洲另类激情综合偷自拍| 四虎成人免费观看在线网址 | 最近免费中文在线视频| 亚洲Av无码国产一区二区 | 亚洲国语在线视频手机在线| 国产成人青青热久免费精品| 在线看片免费人成视频播| 亚洲mv国产精品mv日本mv| 亚洲精品无码日韩国产不卡?V| 99在线视频免费| 猫咪免费观看人成网站在线| 亚洲一区二区中文| 免费在线黄色网址|