Joomla 3.1 Templates by FatCow Coupon

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

Категория: Блог Опубликовано 23.05.2017

Для работы со случайными значениями в 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  
Просмотров: 970