<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)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

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

    Oracle不像SQLServer那樣在存儲(chǔ)過程中用Select就可以返回結(jié)果集,而是通過Out型的參數(shù)進(jìn)行結(jié)果集返回的。實(shí)際上是利用REF CURSOR

    --procedure返回記錄集:

    ----------------------聲明一個(gè)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(只有接口沒內(nèi)容)

    END pkg_test;

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


    -----------------聲明Package Body,即上面Package中的內(nèi)容,包括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是個(gè)參數(shù),

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

    END IF;
    END get;
    END pkg_test;


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

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

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

    return rc;
    end get;

    end pkg_test;

    posted on 2009-01-13 21:55 依然Fantasy 閱讀(1602) 評(píng)論(0)  編輯  收藏 所屬分類: Oracle

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久99国产综合精品免费| 污网站在线观看免费| 成人A片产无码免费视频在线观看| 国产成人免费a在线视频色戒| 亚洲欧洲日韩极速播放 | 国产午夜精品免费一区二区三区| 亚洲高清无码在线观看| 免费人成大片在线观看播放电影| 免费一级毛片在播放视频| 精品成人一区二区三区免费视频| 免费国产真实迷j在线观看| 理论秋霞在线看免费| 亚洲第一永久AV网站久久精品男人的天堂AV | 国产一级淫片免费播放电影| 国产偷国产偷亚洲清高APP| 在线观看免费精品国产| 羞羞漫画登录页面免费| 亚洲综合久久夜AV | 在线看片免费人成视频福利| 亚洲欧洲在线观看| 免费人成在线视频| 理论秋霞在线看免费| 337p日本欧洲亚洲大胆裸体艺术| 国产午夜免费高清久久影院| 亚洲第一页在线视频| 国产成人涩涩涩视频在线观看免费 | 亚洲精品乱码久久久久久按摩| 国产成人无码区免费内射一片色欲| 久久精品亚洲中文字幕无码网站 | 亚洲一区免费观看| 免费可以在线看A∨网站| 免费人成视频在线观看免费| 久久亚洲精品成人综合| 国产99视频精品免费观看7| 亚洲AV成人无码网站| 国产aⅴ无码专区亚洲av| 97视频免费在线| 黄床大片30分钟免费看| 久久精品国产亚洲av四虎| 成人免费淫片在线费观看| j8又粗又长又硬又爽免费视频|