DBMS_RANDOM v16

The DBMS_RANDOM package provides methods to generate random values. The procedures and functions available in the DBMS_RANDOM package are listed in the following table.

Function/procedureReturn typeDescription
INITIALIZE(val)n/aInitializes the DBMS_RANDOM package with the specified seed value. Deprecated, but supported for backward compatibility.
NORMAL()NUMBERReturns a random NUMBER.
RANDOMINTEGERReturns a random INTEGER with a value greater than or equal to -2^31 and less than 2^31. Deprecated, but supported for backward compatibility.
SEED(val)n/aResets the seed with the specified value.
SEED(val)n/aResets the seed with the specified value.
STRING(opt, len)VARCHAR2Returns a random string.
TERMINATEn/aTERMINATE has no effect. Deprecated, but supported for backward compatibility.
VALUENUMBERReturns a random number with a value greater than or equal to 0 and less than 1, with 38-digit precision.
VALUE(low, high)NUMBERReturns a random number with a value greater than or equal to low and less than high.

INITIALIZE

The INITIALIZE procedure initializes the DBMS_RANDOM package with a seed value. The signature is:

INITIALIZE(<val> IN INTEGER)

This procedure is deprecated. It is included for backward compatibility.

Parameters

val

val is the seed value used by the DBMS_RANDOM package algorithm.

Example

The following code shows a call to the INITIALIZE procedure that initializes the DBMS_RANDOM package with the seed value 6475:

DBMS_RANDOM.INITIALIZE(6475);

NORMAL

The NORMAL function returns a random number of type NUMBER. The signature is:

<result> NUMBER NORMAL()

Parameters

result

result is a random value of type NUMBER.

Example

The following code shows a call to the NORMAL function:

x:= DBMS_RANDOM.NORMAL();

RANDOM

The RANDOM function returns a random INTEGER value that is greater than or equal to -2 ^31 and less than 2 ^31. The signature is:

<result> INTEGER RANDOM()

This function is deprecated. It is included for backward compatibility.

Parameters

result

result is a random value of type INTEGER.

Example

The following code shows a call to the RANDOM function. The call returns a random number:

x := DBMS_RANDOM.RANDOM();

SEED

The first form of the SEED procedure resets the seed value for the DBMS_RANDOM package with an INTEGER value. The SEED procedure is available in two forms. The signature of the first form is:

SEED(<val> IN INTEGER)

Parameters

val

val is the seed value used by the DBMS_RANDOM package algorithm.

Example

The following code shows a call to the SEED procedure. The call sets the seed value at 8495.

DBMS_RANDOM.SEED(8495);

SEED

The second form of the SEED procedure resets the seed value for the DBMS_RANDOM package with a string value. The SEED procedure is available in two forms. The signature of the second form is:

SEED(<val> IN VARCHAR2)

Parameters

val

val is the seed value used by the DBMS_RANDOM package algorithm.

Example

The following code shows a call to the SEED procedure. The call sets the seed value to abc123.

DBMS_RANDOM.SEED('abc123');

STRING

The STRING function returns a random VARCHAR2 string in a user-specified format. The signature of the STRING function is:

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

Parameters

opt

Formatting option for the returned string. option can be:

OptionSpecifies formatting option
u or UUppercase alpha string
l or LLowercase alpha string
a or AMixed-case string
x or XUppercase alphanumeric string
p or PAny printable characters

len

The length of the returned string.

result

result is a random value of type VARCHAR2.

Example

The following code shows a call to the STRING function. The call returns a random alphanumeric character string that is 10 characters long.

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

TERMINATE

The TERMINATE procedure has no effect. The signature is:

TERMINATE

The TERMINATE procedure is deprecated. The procedure is supported for compatibility.

VALUE

The VALUE function returns a random NUMBER that is greater than or equal to 0 and less than 1, with 38-digit precision. The VALUE function has two forms. The signature of the first form is:

<result> NUMBER VALUE()

Parameters

result

result is a random value of type NUMBER.

Example

The following code shows a call to the VALUE function. The call returns a random NUMBER:

x := DBMS_RANDOM.VALUE();

VALUE

The VALUE function returns a random NUMBER with a value that is between boundaries that you specify. The VALUE function has two forms. The signature of the second form is:

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

Parameters

low

low specifies the lower boundary for the random value. The random value can be equal to low.

high

high specifies the upper boundary for the random value. The random value is less than high.

result

result is a random value of type NUMBER.

Example

The following code shows a call to the VALUE function. The call returns a random NUMBER with a value that is greater than or equal to 1 and less than 100:

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