06/11/2019
Generar números aleatorios con el paquete DBMS_RANDOM de Oracle

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.NORMALBEGIN
DBMS_OUTPUT.PUT_LINE ('Normal: '||DBMS_RANDOM.NORMAL);
END;
Statement processed.DBMS_OUTPUT.PUT_LINE ('Normal: '||DBMS_RANDOM.NORMAL);
END;
Normal: -.4526669785732070012716307232792922216335
Ejemplo de DBMS_RANDOM.RANDOMBEGIN
DBMS_OUTPUT.PUT_LINE ('Random: '||DBMS_RANDOM.RANDOM);
END;
Statement processed.DBMS_OUTPUT.PUT_LINE ('Random: '||DBMS_RANDOM.RANDOM);
END;
Random: -104848995
Ejemplo de DBMS_RANDOM.SEEDBEGIN
DBMS_OUTPUT.PUT_LINE ('Random: '||DBMS_RANDOM.RANDOM );
DBMS_RANDOM.SEED('xv87X1La');
DBMS_OUTPUT.PUT_LINE ('Random: '||DBMS_RANDOM.RANDOM );
END;
Statement processed.DBMS_OUTPUT.PUT_LINE ('Random: '||DBMS_RANDOM.RANDOM );
DBMS_RANDOM.SEED('xv87X1La');
DBMS_OUTPUT.PUT_LINE ('Random: '||DBMS_RANDOM.RANDOM );
END;
Random: -1648805446
Random: 1170801163
Ejemplo de DBMS_RANDOM.STRINGRandom: 1170801163
BEGIN
DBMS_OUTPUT.PUT_LINE ('String: '||DBMS_RANDOM.STRING('l', 32) );
END;
Statement processed.DBMS_OUTPUT.PUT_LINE ('String: '||DBMS_RANDOM.STRING('l', 32) );
END;
String: mmiskxcfcnbxgogrxrxxoqrqmglafmel
Ejemplo de DBMS_RANDOM.VALUEBEGIN
DBMS_OUTPUT.PUT_LINE ('Value: '||DBMS_RANDOM.VALUE(1, 32) );
END;
Statement processed.DBMS_OUTPUT.PUT_LINE ('Value: '||DBMS_RANDOM.VALUE(1, 32) );
END;
Value: 23.56345683650588560372380282781588531347
Si este recurso te ha servido de ayuda recuerda que puedes apoyar mi trabajo realizando una contribución voluntaria a través de mi perfil de usuario de la página y/o puedes enviar tus comentarios a través del sistema de contacto.
Consulta Lo+ Top de Base De Datos