Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Вопрос по Random  [new]
justis
Member

Откуда:
Сообщений: 22
Создаю рандомную строчку, для уникальнного идентификатора:
select dbms_random.string('X',15)
from dual;

Возник вопрос: надо ли рандом инициализировать?
16 апр 09, 05:42    [7070803]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по Random  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18487
Чтоб получить повторяемые результаты при нескольких прогонах -- нужно, константой
В общем случае, необязательно. Он автоматом инициализируется с применением текущего времени и характеристик текущей сессии

PS. Использовать random для получения уникального идентификатора, как минимум странно. Кто тебе гарантировал, что он возвращает уникальные значения?
Для этого есть, например, последовательности (sequence)
16 апр 09, 05:52    [7070805]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по Random  [new]
justis
Member

Откуда:
Сообщений: 22
автор
Чтоб получить повторяемые результаты при нескольких прогонах -- нужно, константой

Поясни, я не совсем понял...

автор
Использовать random для получения уникального идентификатора, как минимум странно. Кто тебе гарантировал, что он возвращает уникальные значения?

Не ну я конечно глупый пока еще, но я проверяю что такой строки нету!

автор
Для этого есть, например, последовательности (sequence)

Последовательности мне не подходят - мне надо что бы нельзя было на глаз определить следующий или предыдущий идентификатор...
16 апр 09, 05:57    [7070810]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по Random  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18487
Имеется ввиду, при тестировании, когда нужно получать одинаковые результаты при разных прогонах
tst> create table t1 as select rownum rn, rpad(' ', 10) r1, rpad(' ', 10) r2
  2  from dual connect by level <= 10;

Table created.

tst>  begin
  2       dbms_random.seed(100);
  3       for i in 1..10 loop
  4           update t1 set r1=dbms_random.string('a', 10) where rn=i;
  5      end loop;
  6      dbms_random.seed(100);
  7      for i in 1..10 loop
  8          update t1 set r2=dbms_random.string('a', 10) where rn=i;
  9      end loop;
 10  end;
 11  /

PL/SQL procedure successfully completed.

tst> select * from t1;

        RN R1         R2
---------- ---------- ----------
         1 bjhnPVzUJf bjhnPVzUJf
         2 pttRVmuiJP pttRVmuiJP
         3 AQEjRqGmYv AQEjRqGmYv
         4 zdjrCpHBqS zdjrCpHBqS
         5 eoGKDOqKhO eoGKDOqKhO
         6 TTGMztZoan TTGMztZoan
         7 QzxtXsiATL QzxtXsiATL
         8 EZXQaDfvuz EZXQaDfvuz
         9 EZFfIzWJgd EZFfIzWJgd
        10 dXBoLBgoLW dXBoLBgoLW

10 rows selected.
16 апр 09, 06:21    [7070815]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по Random  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
justis,
sys_guid()
16 апр 09, 10:35    [7071495]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить