DBMS_RANDOM パッケージでは、乱数を生成するためのメソッドを提供しています。 次の表は、DBMS_RANDOM パッケージで使用可能な関数とストアドプロシージャを示しています。

表 1. DBMS_RANDOM 関数とストアドプロシージャ
関数/ストアドプロシージャ 戻り値の型 説明
INITIALIZE(val) N/A 指定したシード値を使って DBMS_RANDOM パッケージを初期化します。 後方互換性のみを目的としてサポートされており、推奨しません。
NORMAL() NUMBER NUMBER 型の乱数を返します。
RANDOM INTEGER -2^31 以上 2^31 未満の INTEGER 型の乱数。 後方互換性のみを目的としてサポートされており、推奨しません。
SEED(val) N/A 指定した値を使ってシード値を再設定します。
SEED(val) N/A 指定した値を使ってシード値を再設定します。
STRING(opt, len) VARCHAR2 ランダムな文字列を返します。
TERMINATE N/A 何もしません。 後方互換性のみを目的としてサポートされており、推奨しません。
VALUE NUMBER 38 桁の精度で、0 以上 1 未満の乱数を返します。
VALUE(low, high) NUMBER low で指定した値以上で high で指定した値未満の乱数を返します。

INITIALIZE

INITIALIZE ストアドプロシージャは、シード値を使って DBMS_RANDOM パッケージを初期化します。 構文:
INITIALIZE(val IN INTEGER)

INITIALIZE ストアドプロシージャは、後方互換性のみを目的としてサポートされているため、推奨しません。

パラメーター

パラメーター 説明
val DBMS_RANDOM パッケージアルゴリズムで使用するシード値。

次のコードスニペットは、シード値 6475 を使って DBMS_RANDOM パッケージを初期化する INITIALIZE ストアドプロシージャの呼び出しを示します。

DBMS_RANDOM.INITIALIZE(6475);

NORMAL

NORMAL 関数は、NUMBER 型の乱数を返します。 構文:

result NUMBER NORMAL()

パラメーター

表 2.
パラメーター 説明
result NUMBER 型の乱数を返します。

次のコードスニペットは、NORMAL 関数の呼び出しを示します。

x:= DBMS_RANDOM.NORMAL();

RANDOM

RANDOM 関数は、-2^31 以上 2^31 未満の INTEGER 型の乱数を返します。 構文:

result INTEGER RANDOM()

RANDOM 関数は、後方互換性のみを目的としてサポートされているため、推奨しません。

パラメーター

表 3.
パラメーター 説明
result INTEGER 型の乱数。

次のコードスニペットは、RANDOM 関数の呼び出しを示します。 この呼び出しは、乱数を返します。

x := DBMS_RANDOM.RANDOM();

SEED

SEED ストアドプロシージャは、文字列値を使って DBMS_RANDOM パッケージのシード値を再設定します。 構文:

SEED(val IN VARCHAR2)

パラメーター

パラメーター 説明
val val パラメーターは、DBMS_RANDOM パッケージアルゴリズムで使用するシード値です。

次のコードスニペットは、SEED ストアドプロシージャの呼び出しを示しています。 この呼び出しは、シード値を abc123 に設定します。

DBMS_RANDOM.SEED('abc123');

STRING

STRING 関数は、VARCHAR2 文字列をユーザー指定の形式で返します。 構文:

result VARCHAR2 STRING(opt IN CHAR, len IN NUMBER)

パラメーター

opt:返される文字列のフォーマットオプション。 次の表では、option パラメーターで使用できる値を示しています。
オプション 説明
u または U 英大文字列
l または L 英小文字列
a または A 英大文字・英小文字の混在文字列
x または X 英大文字・数字の混在文字列
p または P 印刷可能文字列

len:返される文字列の長さです。

result:result パラメーターは VARCHAR2 型のランダムな値です。

次のコードスニペットは、STRING 関数の呼び出しを示しています。 この呼び出しは、長さが 10 文字のランダムな英数字文字列を返します。

x := DBMS_RANDOM.STRING('X', 10);

TERMINATE

TERMINATE ストアドプロシージャは何もしません。 構文:

TERMINATE

後方互換性のみを目的としてサポートされているため、TERMINATE ストアプロシージャの使用は推奨しません。

VALUE

VALUE 関数は、38 桁の精度で、0 以上 1 未満の NUMBER 型の乱数を返します。 VALUE 関数には 2 つの形式があります。 1 つめの構文は次のとおりです。

result NUMBER VALUE()

パラメーター

パラメーター 説明 
result NUMBER 型の乱数。

次のコードスニペットは、VALUE 関数の呼び出しを示しています。 この呼び出しは、NUMBER 型の乱数を返します。

x := DBMS_RANDOM.VALUE();

VALUE

VALUE 関数は、ユーザー指定の範囲内の値を持つ NUMBER 型の乱数を返します。 VALUE 関数には 2 つの形式があります。 2 つめの構文は次のとおりです。

result NUMBER VALUE(low IN NUMBER, high IN NUMBER)

パラメーター

パラメーター 説明
low 乱数の下限。 乱数の値は下限の値以上です。
high 乱数の上限。 乱数の値は上限の値未満です。
result NUMBER 型の乱数。

次のコードスニペットは、VALUE 関数の呼び出しを示しています。 この呼び出しは、1 以上 100 未満の値を持つ NUMBER 型の乱数を返します。

x := DBMS_RANDOM.VALUE(1, 100);