在你的工作中是否會為了某個活動要隨機取出一些符合條件的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;。
3. 設定一個生成隨機數的種子:
以下是引用片段:
execute dbms_random.seed(12345678); 或者 execute dbms_random.seed (TO_CHAR(SYSDATE,'MM-DD-YYYY HH24:MI:SS'));