![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вычислить факториал (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 :о)