Случайность в PL SQL - DBMS_RANDOM

добавлено: 19 ноя 12
понравилось:0
просмотров: 21627
комментов: 0

теги:

Автор: Myp3_u_K

Авторский курс. SQL от новичка до профессионала. Бесплатное вводное занятие. Сертификат. Записывайся!
Прокачаю до уровня БОГ!


Для работы со случайными значениями в PL SQL используется пакет DBMS_RANDOM
DBMS_RANDOM пакет содержит встроенный генератор случайных чисе

Модель безопасности
Этот пакет должен быть установлен как SYS . По умолчанию в пакете инициализируется с текущим именем пользователя, текущее время с точностью до секунды, и на нынешней сессии. Oracle рекомендует пользователям, которым необходимо выполнять этот пакет должны быть EXECUTE привилегии , и не должны полагаться на PUBLIC EXECUTE привилегии.
• DBMS_RANDOM.RANDOM возвращает целые [-2 ^ 31, 2 ^ 31).
• DBMS_RANDOM.VALUE возвращает чисела из [0,1) с 38 цифр точности.
DBMS_RANDOM может быть явно инициализирован, но не нужно специально инициализировать каждый раз перед вызовом генератора случайных чисел. Будет автоматически инициализировать с даты, идентификатор пользователя и идентификатор процесса, если явной инициализации не выполняется.
Процедуры и функции пакета
INITIALIZE процедуры

Эта процедура инициализирует генератор случайных чисел
Синтаксис
  DBMS_RANDOM.INITIALIZE (
    val BINARY_INTEGER);


Эта процедура является устаревшей с версии 11gR1, и, хотя в настоящее время поддерживается, она не используется в версии 11G .
RANDOM
Эта процедура генерирует случайное число.
select dbms_random.random from dual
    --1900966755

Эта процедура является устаревшей с версии 11gR1, и, хотя в настоящее время поддерживается, она не используется в версии 11G .
Синтаксис
  DBMS_RANDOM.RANDOM

return binary_integer;
Возвращаемые значения
случайное число binary_integer
________________________________________
SEED
Эта процедура сбрасывает генератор случайных чисел
Синтаксис
  DBMS_RANDOM.SEED (
    val BINARY_INTEGER);

 DBMS_RANDOM.SEED (
    val VARCHAR2);

Параметры
Val - номер генератора случайных числе
________________________________________
Функция String
Эта функция получает случайную строку.
Синтаксис
DBMS_RANDOM.STRING
   opt  IN  CHAR,
   len  IN  NUMBER)
  RETURN VARCHAR2;
 

Параметры
Таблица 108-6 параметров строки Функция
Параметр Описание
opt Указывает, что возвращается строка выглядит так:
• 'U', 'U' - результат прописные буквы,
• 'L', 'L' - результат в строчные буквы
• 'А', 'A' - результат в смешанные буквы, дело
• 'X', 'X' - результат в верхний регистр букв и цифр
• 'Р', 'P' - результат любых печатных символов.
В противном случае возвращается строка в заглавных букв альфа.
len - Длина возвращаемой строки

Возвращаемые значения
Строка varchar2

Примеры
    select DBMS_RANDOM.STRING('u',  4)  from dual;
-- NXBM    
    select DBMS_RANDOM.STRING('i',  5)  from dual;
-- TTULB    
    select DBMS_RANDOM.STRING('a',  6)  from dual;
-- drpGPp    
    select DBMS_RANDOM.STRING('x',  7)  from dual;
-- RXP5CGQ    
    select DBMS_RANDOM.STRING('p',  7)  from dual;
-- 	(>Mf$h@

Процедура TERMINATE
После окончания работы с пакетом DBMS_RANDOM, необходимо вызвать TERMINATE процедуру.
Эта процедура является устаревшей с версии 11gR1, и, хотя в настоящее время поддерживается, она не используется в версии 11G .
Синтаксис
DBMS_RANDOM.TERMINATE;
________________________________________
функция VALUE
возвращает случайное число, большее или равное 0 и меньшее 1, с 38 цифр справа от десятичной (38-знаков после запятой). Кроме того, вы можете получить случайное число х, где х больше или равно low и менее high .
Синтаксис
  DBMS_RANDOM.VALUE
  RETURN NUMBER;

DBMS_RANDOM.VALUE(
  low  IN  NUMBER,
  high IN  NUMBER)
RETURN NUMBER;


Параметры :
low - Наименьшее количество в диапазоне от которых для генерации случайного числа. Номер, который генерируется может быть равна low
high - Наибольшее число ниже которой для генерации случайного числа. Номер, который генерируется будет меньше, чем high

Возвращаемое значение number
Примеры
  select dbms_random.value from dual
-- 0,777585712081073    

    select dbms_random.value(10,15) from dual
--11,3383710413575   

    select dbms_random.value(3,5) from dual
--3,67901998206503  


Чалышев М.М www.orasource.ru

Комментарии




Необходимо войти на сайт, чтобы оставлять комментарии