Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.26;
Скачать: CL | DM;

Вниз

SQL функция IIF   Найти похожие ветки 

 
DancerMan ©   (2006-09-27 12:01) [0]

Добрый день!
Мне нужна SQL фукция IIF, использующаяся во многих SQL-серверах. Хочу написать UDF. Что-то типа такого
function IIF(cond: boolean; var var1, var2: variant): variant; cdecl; export;
begin
 if( cond=true ) then
   Result:=var1
 else
   Result:=var2;
end;
Проблема в том, что в FB нет типа boolean.
Подскажите, как лучше написать функцию IIF?


 
dr Gonzo ©   (2006-09-27 12:12) [1]

С boolean в IB обычно работают через домен, например его можно реализовать примерно так:

CREATE DOMAIN DM_BOOLAS
SMALLINT
NOT NULL
CHECK ((VALUE IS NULL) OR (VALUE IN (0, 1)))


 
DancerMan ©   (2006-09-27 12:26) [2]


> dr Gonzo ©

Я думаю, в моем случае это не поможет.
Например, я пишу iif(field1>field2,field1,0). Как мне описать, что б выражение
field1>field2 возвращало 1 или 0


 
Danilka ©   (2006-09-27 12:33) [3]

см документацию по FB1.5, если не ошибаюсь, там есть такое: case when ... then ... else ... end


 
dr Gonzo ©   (2006-09-27 12:34) [4]

CAST


 
DancerMan ©   (2006-09-27 12:46) [5]


> Danilka ©

про case я знаю, спасибо.
Нужен iif. В плане синтаксиса проще. Что-нибудь вложенное с case заморишься писать, если вообще напишешь.


 
Johnmen ©   (2006-09-27 12:56) [6]


> DancerMan ©


Чем CASE сложнее IIF?


 
DancerMan ©   (2006-09-27 13:16) [7]


> Чем CASE сложнее IIF?

Даже если для такого простого условия второй вариант и допустим, то для меня первый - понятней
1. iif(f1>f2, iif(f3>f4,1,0), iif(f5>f6,1,0) )

2. case when f1>f2 then
     case when f3>f4 then 1 else 0
     end
   else
     case when f5>f6 then 1 else 0
     end
   end

Вообщем, у меня задача реализовать UDF для IIF.


 
Johnmen ©   (2006-09-27 13:42) [8]


> Вообщем, у меня задача реализовать UDF для IIF.


Возьми готовую (IIF), из библиотеки RFunc. Там и реализацию можешь глянуть...



Страницы: 1 вся ветка

Текущий архив: 2006.11.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.048 c
2-1162963780
Marat
2006-11-08 08:29
2006.11.26
Нужна помощь


15-1162572442
Jus
2006-11-03 19:47
2006.11.26
Восстановить файлы после форматирования HDD


2-1162810996
m-kirill-2003
2006-11-06 14:03
2006.11.26
WebSnap


4-1152609432
Balkon
2006-07-11 13:17
2006.11.26
Ожидание события порта открытого в режиме синхронного доступа


8-1145034849
Asics777
2006-04-14 21:14
2006.11.26
AV v.1.5 - Видео проигрыватель вскоре будет как Light Alloy !