![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Толку от UDF RAND() ? [IB6.x]
kaif © (2003-10-15 15:47:00)
В библиотеке ib_udf.dll есть такая функция:
DECLARE EXTERNAL FUNCTION rand
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT "IB_UDF_rand" MODULE_NAME "ib_udf";
Попытка соорудить с ее помощью что-то вроде случайных цен в справочнике товаров:
update goods set price = rand()
назначает всем товарам случайную, но одинаковуюцену.
Я хочу понять, как народ использует rand() и использует ли вообще?
Johnmen (2003-10-15 16:36:00) [1]
>kaif ©
Это библиотека UDF"ов. Я ей пользуюсь...:)
kaif (2003-10-15 16:21:00) [2]
Vlad © (15.10.03 15:56) [2]
:)
2 Johnmen © (15.10.03 16:00) [3]
Я тоже так поначалу думал, но что-то в документации по UDF не видно никакой функции, инициализирующей RAND. Все, что там написано к RAND это:
Returns a random number between 0 and 1. The current time is used to seed the random number generator.
Видимо под current time понимается время старта транзакции (больше мне в голову ничего не приходит).
А RFUNC это что?
Johnmen (2003-10-15 16:00:00) [3]
>kaif ©
Я не использую, но предполагаю, что надо перед вызовом rand сделать инициализацию генерации случ. чисел. Д.б.соответствующая ф-ия.
По кр. мере в RFUNC именно так.
Vlad (2003-10-15 15:56:00) [4]
Продавать товары по одинаковой цене.
Это лучше, чем по случайной :)
kaif (2003-10-15 15:53:00) [5]
Я даже попытался так:
create procedure update_goods_prices
as
declare variable id integer;
declare variable price decimal(8,2);
begin
for select id from goods
into :id
do
begin
price = 100 + 200 * rand();
update goods
set price = :price
where id = :id;
end
end
==================
execute procedure update_goods_prices
==================
Пофиг! все цены ОДИНАКОВЫЕ.
Что делать?