Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как вычислить факториал (5!) на языке SQL(FB1.5)??? [FB1.5]


VadimKV ©   (2004-09-08 10:39:00) 

Как вычислить факториал (5!) на находу (Select) c помощью SQL(FB1.5)???


Fay   (2004-09-08 14:28:00) [1]

Вычисление факториала через рекурсию - это не классика. Это извращение.


DSKalugin   (2004-09-08 13:52:00) [2]

Есть готовая UDF в udflib на www.mers.com но только для Linux

DECLARE EXTERNAL FUNCTION FACT
   DOUBLE PRECISION
RETURNS DOUBLE PRECISION
ENTRY_POINT 'fn_fact' MODULE_NAME 'udflib'

http://www.mers.com/Udf00035.htm


Digitman   (2004-09-08 12:43:00) [3]


> готывая UDF функция есть


скорей всего есть , я не в курсе

посмотри на ibase.ru


VadimKV   (2004-09-08 11:03:00) [4]

Digitman, а готывая UDF функция есть или ты предлагаешь мне её саму написать. Если есть поделитесь. UDF Я сам не разу не писал.


Digitman   (2004-09-08 10:54:00) [5]


> VadimKV   (08.09.04 10:51) [4]


а чем тебя смущает хранимая процедура ?
для небольших N это вполне эффективно
для больших N лучше реализовать UDF, в которой факториал будет вычисляться, и получать вычисленное значение простейшим запросом

select Factorial(5) from RDB$DATABASE


Ega23   (2004-09-08 10:54:00) [6]

Я не знаком с диалектом Interbase. Для MS SQL - пожалуйста:

Declare @X int, @Cnt int

Set NoCount On

Set @X=1
Set @Cnt=1

While (@Cnt<=5)
begin
 Select @X=@X*@Cnt
 Select @Cnt=@Cnt+1
end

Set NoCount OFF

Select Result=@X


Можно и классическим способом, через рекурсию. Но это уже действительно ХП должна быть.


VadimKV   (2004-09-08 10:51:00) [7]

Ega23 предлагаешь спомощью Хранимой процедуры, если нет то поподробней пожалуйста.


Ega23   (2004-09-08 10:47:00) [8]

А вообще - while


Rem   (2004-09-08 10:46:00) [9]

2*3*4*5


Ega23   (2004-09-08 10:45:00) [10]

Гы, с помощью двух goto  :о)


Наверх

Титульная страница Поиск, карта сайта Написать письмо