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

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

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

    隨筆 - 9  文章 - 5  trackbacks - 0
    <2009年1月>
    28293031123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    google了一篇不錯的例子,加了點注解,這樣看起來更方便了:)

    Oracle不像SQLServer那樣在存儲過程中用Select就可以返回結果集,而是通過Out型的參數進行結果集返回的。實際上是利用REF CURSOR

    --procedure返回記錄集:

    ----------------------聲明一個Package--------------
    CREATE OR REPLACE PACKAGE pkg_test
    AS
    TYPE myrctype IS REF CURSOR;

    PROCEDURE get (p_id NUMBER, p_rc OUT myrctype); --Package中聲明名為get 的Procedure(只有接口沒內容)

    END pkg_test;

    --------------------------------------------------------


    -----------------聲明Package Body,即上面Package中的內容,包括Procedure get---------------------
    CREATE OR REPLACE PACKAGE BODY pkg_test
    AS
    PROCEDURE get (p_id NUMBER, p_rc OUT myrctype)
    IS
    sqlstr VARCHAR2 (500);
    BEGIN
    IF p_id = 0 THEN
    OPEN p_rc FOR
    SELECT ID, NAME, sex, address, postcode, birthday
    FROM student;
    ELSE
    sqlstr :=
    'select id,name,sex,address,postcode,birthday
    from student where id=:w_id'; --w_id是個參數,

    --以下 p_rc是個REF CURSOR游標類型,而且是OUT型參數,即可返回一個記錄集了。USING p_id就是替換上面SQL中:w_id值拉:)
    OPEN p_rc FOR sqlstr USING p_id; 

    END IF;
    END get;
    END pkg_test;


    --function返回記錄集的例子,原理和上面相同,而是用function的return值來返回記錄集。

    函數返回記錄集:
    建立帶ref cursor定義的包和包體及函數:
    CREATE OR REPLACE
    package pkg_test as
    /* 定義ref cursor類型
    不加return類型,為弱類型,允許動態sql查詢,
    否則為強類型,無法使用動態sql查詢;
    */
    type myrctype is ref cursor;
    function get(intID number) return myrctype;
    end pkg_test;
    /

    CREATE OR REPLACE
    package body pkg_test as
    --函數體
    function get(intID number) return myrctype is
    rc myrctype; --定義ref cursor變量
    sqlstr varchar2(500);
    begin
    if intID=0 then
    --靜態測試,直接用select語句直接返回結果
    open rc for select id,name,sex,address,postcode,birthday from student;
    else
    --動態sql賦值,用:w_id來申明該變量從外部獲得
    sqlstr := 'select id,name,sex,address,postcode,birthday from student where id=:w_id';
    --動態測試,用sqlstr字符串返回結果,用using關鍵詞傳遞參數
    open rc for sqlstr using intid;
    end if;

    return rc;
    end get;

    end pkg_test;

    posted on 2009-01-13 21:55 依然Fantasy 閱讀(1602) 評論(0)  編輯  收藏 所屬分類: Oracle
    主站蜘蛛池模板: av无码久久久久不卡免费网站| 免费人成大片在线观看播放| 无码中文字幕av免费放dvd| 国产亚洲情侣一区二区无| 国产精品久久亚洲一区二区| 国产精品酒店视频免费看| 亚洲国产成人综合精品| 日韩一级视频免费观看| 国产成人va亚洲电影| 亚洲精品无码久久久久AV麻豆| 欧亚一级毛片免费看| 中文字幕亚洲第一| 中文字幕在线免费视频| 激情综合色五月丁香六月亚洲| 91在线免费观看| 久久久久亚洲av无码专区导航 | 一日本道a高清免费播放| 亚洲av无码成人精品区在线播放| 国产精品免费大片一区二区| 最新亚洲成av人免费看| 香蕉免费一区二区三区| 亚洲三级在线播放| 免费一级毛片不卡在线播放| 好男人资源在线WWW免费| 亚洲日本中文字幕区| 免费无码又爽又刺激聊天APP| 亚洲AV日韩AV永久无码色欲| MM131亚洲国产美女久久| 99久久免费看国产精品| 亚洲色成人四虎在线观看| 亚洲精品国产日韩无码AV永久免费网| 久久er国产精品免费观看8| 亚洲一区二区电影| 日本久久久免费高清| 国产激情久久久久影院老熟女免费 | 亚洲最大的视频网站| 日韩a级毛片免费观看| 成人毛片100免费观看| 亚洲综合色7777情网站777| 亚洲国产婷婷香蕉久久久久久| 国产情侣久久久久aⅴ免费|