К>  for select id, name from tovar
 К>   where ((:typesearch = 1) and (name = :searchstr))
 К>      or ((:typesearch = 2) and (name like :searchstr || '%'))
 К>      or ((:typesearch = 3) and (name like '%' || :searchstr || '%'))
 К>  do ....

 К>   вроде элементарно, оптимизатор правда пишет:
 К>     PLAN (TOVAR T INDEX (TOVAR_NAME))

 К>   НО !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 К>   Я думаю ты будешь удивлён ;)

if typeSearch=1
 then  for select id, name from tovar
   where (name = :searchstr)
    do select  from sub_routine..........
if typeSearch=2
 then  for select id, name from tovar
   where (name like :searchstr || '%')
    do select  from sub_routine..........
if typeSearch=3
 then  for select id, name from tovar
   where (name like '%' || :searchstr || '%')
    do select  from sub_routine..........

где sub_route  - процедура куда запихано то что у тебя после do

и все работает быстро и запросы элементарные и гибко очень.

--
С уважением
Кочмин Александр


Ответить