1. Enorable
  2. Base De Datos
  3. Oracle
1
0
 
vistas: 299
Joswald Oropeza
| 06/11/2019

Generar números aleatorios con el paquete DBMS_RANDOM de Oracle

Trabajar con números aleatorios en Oracle es posible mediante el uso del paquete DBMS_RANDOM, el cual ofrece un conjunto de funciones, procedimientos o subprogramas para obtener números al azar.

DBMS_RANDOM es un paquete propio de la plataforma que proporciona un generador de números y cadenas de manera aleatorio y que ofrece además, a partir del uso de funciones y procedimientos declarados internamente para lograr dicho fin.

DBMS_RANDOM.INITIALIZE este procedimiento fue eliminado del paquete a partir de la versión 11gR1 de la base de datos Oracle.

DBMS_RANDOM.NORMAL es una función que genera un número aleatorio normal en una distribución estándar de Oracle. Devuelve un entero aleatorio mayor o igual a potencia (-2,31) y menor que la potencia (2,31).

DBMS_RANDOM.RANDOM esta función esta en desuso a partir de la versión 11gR1 de la base de datos Oracle y aunque en versiones posteriores es aún compatible, se recomienda no utilizar.

DBMS_RANDOM.SEED es un procedimiento que permite inicializar la semilla. Requiere de un parámetro numérico o cadena para generar un número aleatorio.

DBMS_RANDOM.STRING es una función que retorna una cadena aleatoria. Requiere dos parámetros (opt y len), donde el primero de ellos especifica el aspecto de la cadena de salida y el segundo la longitud de la cadena.

Estas son las entradas válidas para el parámetro opt de DBMS_RANDOM.STRING:

  • 'u', 'U' - cadena de retorno en mayúsculas
  • 'l', 'L' - cadena de retorno en caracteres alfabéticos en minúsculas
  • 'a', 'A' - cadena de retorno en caracteres alfabéticos de mayúsculas y minúsculas
  • 'x', 'X' - cadena de retorno en mayúsculas y caracteres alfanuméricos
  • 'p', 'P' - devuelve una cadena en cualquier carácter imprimible

De lo contrario, la cadena de retorno está en mayúsculas.

DBMS_RANDOM.TERMINATE este procedimiento está en desuso del paquete a partir de la versión 11gR1 de la base de datos Oracle, pero aunque actualmente es compatible con versiones posteriores, se recomienda no utilizarse.

DBMS_RANDOM.VALUE esta función obtiene un número aleatorio, mayor o igual a 0 y menor que 1, con una precisión de hasta 38 dígitos a la derecha del punto decimal. Requiere dos parámetros para producir números de hasta 38 dígitos de precisión. Acepta también dos parámetros numéricos (low y high), los cuales determinan el rango del número aleatorio resultante.

Usos del paquete DBMS_RANDOM de Oracle

Ejemplo de DBMS_RANDOM.NORMAL
BEGIN
DBMS_OUTPUT.PUT_LINE ('Normal: '||DBMS_RANDOM.NORMAL);
END;
Statement processed.
Normal: -.4526669785732070012716307232792922216335
Ejemplo de DBMS_RANDOM.RANDOM
BEGIN
DBMS_OUTPUT.PUT_LINE ('Random: '||DBMS_RANDOM.RANDOM);
END;
Statement processed.
Random: -104848995
Ejemplo de DBMS_RANDOM.SEED
BEGIN
DBMS_OUTPUT.PUT_LINE ('Random: '||DBMS_RANDOM.RANDOM );
DBMS_RANDOM.SEED('xv87X1La');
DBMS_OUTPUT.PUT_LINE ('Random: '||DBMS_RANDOM.RANDOM );
END;
Statement processed.
Random: -1648805446
Random: 1170801163
Ejemplo de DBMS_RANDOM.STRING
BEGIN
DBMS_OUTPUT.PUT_LINE ('String: '||DBMS_RANDOM.STRING('l', 32) );
END;
Statement processed.
String: mmiskxcfcnbxgogrxrxxoqrqmglafmel
Ejemplo de DBMS_RANDOM.VALUE
BEGIN
DBMS_OUTPUT.PUT_LINE ('Value: '||DBMS_RANDOM.VALUE(1, 32) );
END;
Statement processed.
Value: 23.56345683650588560372380282781588531347

Todos los titulares en un solo lugar...