【PL/SQL】乱数・ランダムの取得方法


ここではORACLE社が提供するPL/SQL言語で乱数・ランダムの取得方法について紹介しています。

PL/SQLの基本的な処理については↓で詳しく解説していますので参考にしてください。
>>PL/SQLの書き方

乱数・ランダムの取得方法

乱数・ランダムな値を取得するには、DBMS_RANDOMパッケージを使用します。

例1:0以上1未満の小数値

乱数は次のように「dbms_random.value」で取得できます。

dbms_random.value;
SQL> CREATE OR REPLACE PROCEDURE PRO1
  2  IS
  3      rdm NUMBER;
  4  BEGIN
  5      rdm := dbms_random.value;
  6      DBMS_OUTPUT.PUT_LINE(rdm);
  7  END;
  8  /

プロシージャが作成されました。

SQL> set serveroutput on
SQL> EXECUTE PRO1
.78583289615810071896532860254216333557

PL/SQLプロシージャが正常に完了しました。

例2:1以上10未満の小数値

乱数は次のように「dbms_random.value(開始値,終了値)」で、値の範囲を選択して取得できます。

dbms_random.value(開始値,終了値);
SQL> CREATE OR REPLACE PROCEDURE PRO1
  2  IS
  3      rdm NUMBER;
  4  BEGIN
  5      rdm := dbms_random.value(1,10);
  6      DBMS_OUTPUT.PUT_LINE(rdm);
  7  END;
  8  /

プロシージャが作成されました。

SQL> EXECUTE PRO1
9.36265636801338346552117087567003671325

PL/SQLプロシージャが正常に完了しました。

例3:ランダム文字列

DBMS_RANDOMパッケージでは、「dbms_random.value(文字種,桁数)」で、ランダムな文字列を取得できます。

SQL> CREATE OR REPLACE PROCEDURE PRO1
  2  IS
  3      rdm VARCHAR2(10);
  4  BEGIN
  5      rdm := dbms_random.string('A',10);
  6      DBMS_OUTPUT.PUT_LINE(rdm);
  7  END;
  8  /

プロシージャが作成されました。

SQL> EXECUTE PRO1
zWAQxxpUeA

PL/SQLプロシージャが正常に完了しました。
文字種意味
uまたはU大文字のアルファベット文字列
lまたはL小文字のアルファベット文字列
aまたはA大文字・小文字が混在したアルファベット文字列
xまたはX大文字のアルファベット文字列と数字の文字列
pまたはP印刷可能な任意の文字の文字列