Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция для получения случайного числа? / 11 сообщений из 11, страница 1 из 1
08.08.2002, 18:19
    #32041970
Tаrantino
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для получения случайного числа?
Для Оракл совсем недавно начал програмировать, и поэтому наверное задаю глупый вопрос, в общем так есть ли в Оракл функция для получения случайного числа?
...
Рейтинг: 0 / 0
08.08.2002, 18:24
    #32041975
nick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для получения случайного числа?
DBMS_RANDOM
...
Рейтинг: 0 / 0
08.08.2002, 20:18
    #32041998
none
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для получения случайного числа?
DBMS_RANDOM на 8.1.7 - дико тормозной, потому как написан на PL/SQL. А от 8.1.5 - нестабильный.
О 9 не вкурсе.
Но есть некая штука, над которой можно поизвращаться, это SYS_GUID()
Смотрите:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
SQL> SELECT SYS_GUID() FROM DUAL;

SYS_GUID()
 --------------------------------
 
E88A92B5618A4D2786D1CB9FFFEE5B5B

SQL> SELECT SYS_GUID() FROM DUAL;

SYS_GUID()
 --------------------------------
 
CE2D4AAFB531405CAB1CEC2F4AABD561

SQL> 
SQL> SELECT SYS_GUID() FROM DUAL;

SYS_GUID()
 --------------------------------
 
15C54A70C0934497A33A9F0756D5CECD

SQL> SELECT SYS_GUID() FROM DUAL;

SYS_GUID()
 --------------------------------
 
D5A876EBFFC247E88D1747E5FD5BAE30

SQL> SELECT SYS_GUID() FROM DUAL;

SYS_GUID()
 --------------------------------
 
F5530E4DD1334899B4E5C51011544EDB


Ну чем не набор случайных чисел?
...
Рейтинг: 0 / 0
09.08.2002, 09:04
    #32042045
Tаrantino
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для получения случайного числа?
Классно, всем спасибо!
Мне понравилось это:
SELECT SYS_GUID() FROM DUAL;
...
Рейтинг: 0 / 0
09.08.2002, 10:57
    #32042075
alvako
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для получения случайного числа?
to: None

Что значит "дико тормозной, потому как написан на PL/SQL" ??? Кто вам такое сказал? И на чём должно быть написано чтобы быстро было?

Я сейчас замерил: 1 миллион вызовов функции DBMS_RANDOM.value(1,100) занял 30 секунд. Это по вашему "дико тормозной"?
...
Рейтинг: 0 / 0
09.08.2002, 11:10
    #32042082
nick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для получения случайного числа?
to: None
sys_guid генерит, насколько я знаю, уникальное значение
а уникальное значение и случайное значение это далеко не одно и тоже
...
Рейтинг: 0 / 0
09.08.2002, 11:13
    #32042083
alvako
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для получения случайного числа?
2 None
Продолжение:
а 1 миллион вызовов вашей функции SYS_GUID() - занял 198 секунд. А она по вашему почему тормозит?

Кроме того в DBMS_RANDOM куча функций для генерации случайных чисел, стрингов заданного размера, заданного набора символов, заданного случайного распределения.

--
Oracle 8.1.7
...
Рейтинг: 0 / 0
12.08.2002, 11:51
    #32042444
none
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для получения случайного числа?
to nick: а я собственно и не утверждал что SYS_GUID генерит случайные распределенные по какомуто закону величины. Но для многих случаев и этого хватает.

to alvaco:
>>Что значит "дико тормозной, потому как написан на PL/SQL" ??? Кто вам такое сказал? И на чём должно быть написано чтобы быстро было?

Думаю на том, что НЕ должно интерпритироваться.

Не помню, где точно я пользовался DBMS_RANDOM, но точно помню, что его производительность полностью НЕ устроила. Посмотрю, и отвечу точно.
...
Рейтинг: 0 / 0
12.08.2002, 14:15
    #32042509
alvako
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для получения случайного числа?
2 None

>>И на чём должно быть написано чтобы быстро было?
>Думаю на том, что НЕ должно интерпритироваться.

А кто вам сказал что PL/SQL package при запуске интерпретируется??? Они же в скомпилированном виде лежат.

> но точно помню, что производительность DBMS_RANDOM полностью НЕ устроила
Ага, и вы использовали SYS_GUID, который его медленнее. Да и очень любопытно, где это вам не хватило его производительности (всё же 1 млн. вызовов за 30 сек. это очень немало.).
...
Рейтинг: 0 / 0
12.08.2002, 19:17
    #32042668
none
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для получения случайного числа?
Да, возможно мне придется извиниться перед читателями форума и господами Tarantino и alvako в первую очередь.

DBMS_RANDOM работает вполне приемлемо

Насчет этого не уверен:
>>А кто вам сказал что PL/SQL package при запуске интерпретируется??? Они же в скомпилированном виде лежат.

Дайте плиз ссылку на документацию, если не сложно.
Хотя вот тут читаю:
PL/SQL User's Guide and Reference/Overview/Advantages of PL/SQL/Better Performance:

PL/SQL stored procedures are compiled once and stored in executable form, so procedure calls are quick and efficient.

Что значит executable form - комманды, которые исполняються процессором (машинный код)? Или какая-то прослойка, которая просто (допустим PL/SQL Engine'ром) переводится в машинный код?
...
Рейтинг: 0 / 0
13.08.2002, 08:28
    #32042710
alvako
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для получения случайного числа?
2 None

Oracle8i Concepts
#18 Procedures and Packages

The PL/SQL compiler parses the source code and produces a parsed representation of the source code, called a parse tree
The PL/SQL compiler generates the pseudocode, or P code, based on the parsed code. The PL/SQL engine executes this when the procedure or package is invoked.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция для получения случайного числа? / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]