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

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

Процедура на сервере с параметрами [D5]


Страницы:   1 2

BorisUK ©   (2003-01-17 07:49:00) 

Есть желание перенести формирование запроса на сервер, в процедуру. (а не формировать его на клиенте в зависимости от многих условий)
Проблема в том что эти условия никто не отменял.
вот Пример
PROCEDURE GetDoc(MyCursor IN OUT MyProc, dtCreateDateBegin in varchar2, dtCreateDateEnd in varchar2, DocState in dt.Reference, lNomerDoc in varchar2, lUserID in varchar2)
AS ....

Далее нужен запрос если параметры lUserID lNomerDoc и DocState - переданы, то включить их в запрос, а если не переданы, то такое условие не ставить.

Если делать чтото типа
If lUserID <> "" then
select * from table where fieldlUserID = lUserID;
else
select * from table;
end if;

Но понятно, что при даже трех параметрах - так делать уже неудобно (параметров 12).
Есть ли другой способ - подскажите где копать :) ?????
Очень надеюсь , что способ есть - ИМХО должен быть!!
Заранее спасибо.


BorisUK   (2003-01-17 08:28:00) [21]

Слушай
> Alexandr ©

или я не так чтото делаю или ты меня по ложному пути направил
Ибо делаю
select * from table where (fieldlUserID = "" or IuserID="");
и пока на входе в параметре не будет чтото что в поле есть (например USER1) записи не выбераются
Тоесть как я и предположил конструкция ищет в поле либо значение либо его отсутствие (тоесть пусто чтоб было В ПОЛЕ) но никак не ВСЕ ПОЛЯ.
Если у тебя пример полностью работает, то может листинг поши чтоли... у меня однозначно такая конструкция не работает.
Кстати пробовал и ничего не передавать и передавать в параметр :="". В хранимой процедуре пробовал и
select * from table where (fieldlUserID = lUserID or IuserID="");
и так
select * from table where (fieldlUserID = lUserID or IuserID=null);


????


Alexandr   (2003-01-17 08:11:00) [22]

ты вообще знаешь как условие or работает?
Или сегодня просто неудачный день?
так вот, если у тебя iuserid будет равно "" т.е. результат true,
то будет пофигу чего там в fieldlUserID все-равно все записи выберуться. т.е. условие в скобках будет всегдла true.


BorisUK   (2003-01-17 08:06:00) [23]

Ну так получится что когда параметр lUserID="" (тоесть непередан) то будет
select * from table where (fieldlUserID = "" or IuserID="");
Да хоть бы и так, но селектнутся записи где это поле пустое !!!
Но надо то, чтоб при отсутствии параметра считать что его важе не надо - тоесть все...
select * from table

!




Alexandr   (2003-01-17 08:01:00) [24]

не совсем понял. Как-то ты запутанно очень объяснил
Но смею предложить вариант

select * from table where (fieldlUserID = lUserID or IuserID="");

примерно так.


Страницы:   1 2

Наверх

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