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

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

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

    zhyiwww
    用平實的筆,記錄編程路上的點點滴滴………
    posts - 536,comments - 394,trackbacks - 0

    ORACLE 里取隨機數(shù)的方法(網(wǎng)上收集整理)

    ???????????????????????????????????????????????????????????????????? 2003-06 余楓

    ????????????????????????????????????????????????????????????????????

    ??? 在你的工作中是否會為了某個活動要隨機取出一些符合條件的EMAIL或者手機號碼用戶,來頒發(fā)獲獎通知或其它消息?

    ???

    ??? 如果是的話,可以用oracle里生成隨機數(shù)的PL/SQL, 目錄文件名在:/ORACLE_HOME/rdbms/admin/dbmsrand.sql

    ?

    ??? 用之前先要在sys用戶下編譯:

    ???

    ??? SQL>@/ORACLE_HOME/rdbms/admin/dbmsrand.sql

    ???

    ??? 它實際是在sys用戶下生成一個dbms_random程序包,同時生成公有同義詞,并授權(quán)給所有數(shù)據(jù)庫用戶有執(zhí)行的權(quán)限。

    ???

    ??? 使用dbms_random程序包, 取出隨機數(shù)據(jù)的方法:

    ?

    ??? 1. 先創(chuàng)建一個唯一增長的序列號tmp_id

    ???????

    ??? ??? create sequence tmp_id increment by 1 start with 1 maxvalue 9999999 nocycle nocache;

    ??? ???

    ??? 2. 然后創(chuàng)建一個臨時表tmp_1,把符合本次活動條件的記錄全部取出來。

    ???

    ??? ??? create table tmp_1 as select tmp_id.nextval as id,email,mobileno from 表名 where 條件;

    ??? ???

    ??? ??? 找到最大的id號:

    ??? ???

    ??? ??? select max(id) from tmp_1;

    ??? ???

    ??? ??? 假設(shè)為5000

    ??? ???

    ??? 3. 設(shè)定一個生成隨機數(shù)的種子

    ?

    ??? ??? execute dbms_random.seed(12345678);

    ?

    ??????? 或者

    ?

    ??? ??? execute dbms_random.seed(TO_CHAR(SYSDATE,'MM-DD-YYYY HH24:MI:SS'));

    ?

    ??? 4. 調(diào)用隨機數(shù)生成函數(shù)dbms_random.value生成臨時表tmp_2

    ????? ?

    ??????? 假設(shè)隨機取200

    ???????

    ??? ??? create table tmp_2 as select trunc(dbms_random.value(1,5000)) as id from tmp_1 where rownum<201;

    ?

    ????? [ 說明:dbms_random.value(1,5000)是取15000間的隨機數(shù),會有小數(shù),

    ? ?????? ????? trunc 函數(shù)對隨機數(shù)字取整,才能和臨時表的整數(shù)ID字段相對應(yīng)。

    ? ?????? ?????

    ??????? 注意:如果tmp_1記錄比較多(10萬條以上),也可以找一個約大于兩百行的表(假如是tmp_3)來生成tmp_2

    ? ??????

    ? ?????? create table tmp_2 as select trunc(dbms_random.value(1,5000)) as id from tmp_3 where rownum<201; ]

    ? ??????

    ??? 5. tmp_1 tmp_2相關(guān)聯(lián)取得符合條件的200用戶

    ?

    ??????? select t1.mobileno,t1.email from tmp_1 t1,tmp_2 t2 where t1.id=t2.id;

    ?

    ????? [ 注意:如果tmp_1記錄比較多(10萬條以上),需要在id字段上建索引。]

    ???????

    ??????? 也可以輸出到文本文件:

    ???????

    ??????? set pagesize 300;

    ??????? spool /tmp/200.txt;

    ??????? select t1.mobileno,t1.email from tmp_1 t1,tmp_2 t2 where t1.id=t2.id order by t1.mobileno;

    ??????? spool off;

    ?

    ??? 6. 用完后,刪除臨時表tmp_1tmp_2和序列號tmp_id?

    |----------------------------------------------------------------------------------------|
                               版權(quán)聲明  版權(quán)所有 @zhyiwww
                引用請注明來源 http://www.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2006-05-23 17:59 zhyiwww 閱讀(330) 評論(0)  編輯  收藏 所屬分類: database
    主站蜘蛛池模板: 亚洲综合小说另类图片动图| 国产精品亚洲一区二区三区久久| 久久亚洲精品无码网站| 国产免费A∨在线播放| www视频在线观看免费| 亚洲国产精品丝袜在线观看| 久久久久亚洲AV无码专区体验| 亚洲av成本人无码网站| 免费h视频在线观看| 免费无码又爽又刺激毛片| 亚洲日韩精品一区二区三区无码 | 久久久久久国产精品免费免费男同 | 久久99青青精品免费观看| 天天天欲色欲色WWW免费| 精品亚洲一区二区| 亚洲精品国产摄像头| 久久国产乱子伦免费精品| 免费在线观看亚洲| 亚洲啪啪免费视频| a毛片在线看片免费| 国产免费牲交视频| 亚洲最大中文字幕| 成人无码精品1区2区3区免费看| 在线免费观看毛片网站| 久久久久亚洲精品美女| 免费人成大片在线观看播放| 久久久久久99av无码免费网站 | 国色精品va在线观看免费视频| 国产成人免费a在线资源| 亚洲国产成人九九综合| 一个人免费视频观看在线www| 午夜亚洲av永久无码精品| 亚洲AV成人无码天堂| 特级精品毛片免费观看| 亚洲情a成黄在线观看| 亚洲一区二区三区国产精华液| 人妻无码久久一区二区三区免费| 亚洲视频一区二区| 国产精品亚洲AV三区| 手机看黄av免费网址| 亚洲AV区无码字幕中文色|