<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 里取隨機數的方法(網上收集整理)

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

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

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

    ???

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

    ?

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

    ???

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

    ???

    ??? 它實際是在sys用戶下生成一個dbms_random程序包,同時生成公有同義詞,并授權給所有數據庫用戶有執行的權限。

    ???

    ??? 使用dbms_random程序包, 取出隨機數據的方法:

    ?

    ??? 1. 先創建一個唯一增長的序列號tmp_id

    ???????

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

    ??? ???

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

    ???

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

    ??? ???

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

    ??? ???

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

    ??? ???

    ??? ??? 假設為5000

    ??? ???

    ??? 3. 設定一個生成隨機數的種子

    ?

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

    ?

    ??????? 或者

    ?

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

    ?

    ??? 4. 調用隨機數生成函數dbms_random.value生成臨時表tmp_2

    ????? ?

    ??????? 假設隨機取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間的隨機數,會有小數,

    ? ?????? ????? trunc 函數對隨機數字取整,才能和臨時表的整數ID字段相對應。

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

    ??????? 注意:如果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相關聯取得符合條件的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?

    |----------------------------------------------------------------------------------------|
                               版權聲明  版權所有 @zhyiwww
                引用請注明來源 http://www.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2006-05-23 17:59 zhyiwww 閱讀(331) 評論(0)  編輯  收藏 所屬分類: database
    主站蜘蛛池模板: 老司机午夜在线视频免费观| 婷婷亚洲综合五月天小说| 亚洲伊人久久大香线蕉| 久久久久免费看黄a级试看| 激情综合色五月丁香六月亚洲| 一级毛片不卡免费看老司机| 亚洲国产免费综合| 一级毛片免费不卡| 亚洲色欲久久久综合网| 国产猛男猛女超爽免费视频| 亚洲AV无码精品色午夜果冻不卡| 国产午夜精品久久久久免费视| 午夜亚洲www湿好大| 9420免费高清在线视频| 亚洲午夜精品在线| 青青草国产免费久久久91| 亚洲国产aⅴ成人精品无吗| 免费一级毛片一级毛片aa| www.av在线免费观看| 亚洲毛片αv无线播放一区| 特级精品毛片免费观看| 亚洲AV无码专区在线亚| 国产乱弄免费视频| A国产一区二区免费入口| 亚洲综合自拍成人| 四虎影院免费在线播放| www成人免费视频| 亚洲电影免费观看| 狼友av永久网站免费观看| 一级一级一级毛片免费毛片| 亚洲色四在线视频观看| 好吊妞998视频免费观看在线| 五月天婷婷免费视频| 麻豆亚洲av熟女国产一区二| 宅男666在线永久免费观看| 中文在线观看免费网站| 亚洲第一区视频在线观看| 又粗又硬又黄又爽的免费视频 | 无码欧精品亚洲日韩一区夜夜嗨 | 免费无码又爽又刺激一高潮| 久久久国产精品亚洲一区|