| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Firebird, Interbase > Не выполняется блок if-else в процедуре |
| Автор: loneybibi 25.2.2014, 21:52 | ||
| Добрый день всем! Есть сервер FireBird 2.1, SQLDialect3. В базе данных описана вот такая хранимая процедура, но в ней третий "if" когда (FILTER_TYPE=2) не хочет работать и все время выдает пустую выборку. Прошу подсказать что не так в этой процедуре или логике, как правильно описать LIKE запрос в данной ситуации? Что еще может быть не так ? За советы по улучшению и простоте отдельное спасибо. Заранее большое спасибо. На входе подается 0,1 или 2. При 0 выбираються все данные из таблицы, при 1 из второго столбца по второму входящему параметру, при 2 из третьего по входящему параметру. Вообщем что бы не писать отдельные процедуры для каждого варианта.
|
| Автор: Akella 26.2.2014, 10:35 |
| сделайте case вместо нескольких if |
| Автор: Akina 26.2.2014, 11:41 | ||
Да соберите всё в один запрос:
|
| Автор: loneybibi 26.2.2014, 20:51 | ||||||||
Пытался вот по такой схеме не получается!
Приведите пожалуйста пример правильно case для firebird 2.1. Добавлено через 1 минуту и 50 секунд
Спасибо! Ваш вариант работает как надо вроде. Не могли бы вы пояснить его работу и принцып подробнее!? |
| Автор: loneybibi 26.2.2014, 22:01 | ||
| Вот код к которому я пришел. Но теперь другая проблема! LIKE не работает нормально. Он отбирает только те значения которые точно соответствуют запросу. Например есть запись "ooo telekom" и выберется она только тогда когда FILTER_VALUE будет соответствовать этой полной фразе, если написать "tel" то будет пустой результат. Как исправить что бы он выбирал все похожее?
|
| Автор: Akella 27.2.2014, 12:53 |
а что справки и Интернета недостаточно? |