powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Создание конструктора фильтров
9 сообщений из 9, страница 1 из 1
Создание конструктора фильтров
    #39501142
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть идея дать пользователю возможность создавать свои фильтры по некоторым вычисляемым параметрам.

Как в почтовой программе:
"если отправитель письма такой-то и тема содержит вот это,
то положить письмо в такую-то папку."

Прикинул - у меня получилось 12 таблиц для описания конструктора фильтров.

И возник вопрос - как лучше обрабатывать логику,
которую накликал пользователь:
Генерить финальный SQL на клиенте или на сервере процедурой,
и подставлять-ли в него уже вычисленные значения или ставить имена полей таблиц?

Если подставлять вычисленные - то прийдется генерить запрос каждый раз перед выполнением,
а если подставлять поля - то уже можно создать хранимые процедуры.

Но для генерации процедур у пользователя может не быть прав,
а значит нужен некий джоб-помошник, который перегенерирует процедуры каждый раз, когда пользователь меняет логику фильтра.

Может есть у кого примеры реализаций, чтобы понять хоть в правильном ли направлении двигаюсь.

---
Пишу в теме Оракла потому, что фильтр будет работать с этой базой, а особенности языка, как показывает практика, сильно влияют на способ реализации.
То же самое по логике работы -
на MSSQL по коду может сильно отличаться.
...
Рейтинг: 0 / 0
Создание конструктора фильтров
    #39501156
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ART-CODEдать пользователю возможность создавать свои фильтрыДай пользователю возможность писать sql. Почему-то все продукты издеваются над эргономикой, заставляя делать пользователя сотни кликов и драг-дропов в запутанных диалогах. В итоге приходится вместо простого текстового окна прикладывать неимоверные усилия и тратить время на множество экспериментов, чтобы разобраться, как получить тот или иной результат.
...
Рейтинг: 0 / 0
Создание конструктора фильтров
    #39501163
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,
Обеими руками "за",
если бы не уголовная ответстенность в случае, если в результате такого решения "что-то пойдет не так".
Все слишком серьезно в этот раз.
...
Рейтинг: 0 / 0
Создание конструктора фильтров
    #39501217
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ART-CODE,
ART-CODEЕсли подставлять вычисленные - то прийдется генерить запрос каждый раз перед выполнением,
Опасаешься огромных расходов на хард парс? В большинстве случаев, подобные штуковины генерируют динамические запросы печального вида.
Взять тот же Oracle BI
Когда пользователь открывает отчет, сервер презентаций (Presentation Server) генерирует запрос на языке Logical SQL к серверу BI. Сервер BI разбирает запрос, и переводит его в запросы к источникам данных на их «родных» языках — sql, mdx и т.п.
...
Рейтинг: 0 / 0
Создание конструктора фильтров
    #39501586
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, продолжаю размышлять вслух (уж извините что отвлекаю).

Скорее всего, генерить SQL на клиенте не правильно:
1 - так теряется возможность использовать настроенные пользователем фильтры в джобах. (когда клиент получает результат автоматических проверок по своим фильтрам - например, по почте.)
2 - вопрос безопасности: доверия тому, что прилетело для выполнения в сервер от клиента - все-таки меньше, чем тому, что сгенерирует сервер по заранее известным правилам.

С другой стороны - городить отдельный вспомогательный джоб для генерации хранимок тоже не очень хочется.

Todo: уточнить хватит ли прав у
пользователей для выполнения динамического SQL.
---
env,
Нет, вряд-ли будут огромные расходы на "парс", все-же задача в моем случае просто проверить пару десятков уже готовых значений - на соответствие некоторым допустимым диапазонам.
Это не таблицы сканировать, а простое сравнение на больше/меньше/between/ и тому подобное.
Скорее, опасаюсь проблем с безопасностью при использовании генрации SQL.
Могут завернуть динамический код безопасники.
И это еще не самый худший вариант.
Хуже - если решение пройдет "в бой", а потом возникут проблемы.
...
Рейтинг: 0 / 0
Создание конструктора фильтров
    #39501624
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ART-CODE,

Как вариант для размышлений - идти по готовому пути систем отчётности.
Т.е. иметь некие преднастроенные датасеты с параметрами и обработкой "пусто"/"все", всё что в этом случае может пользователь - сохранить готовый набор параметров для фиксированного запроса.
...
Рейтинг: 0 / 0
Создание конструктора фильтров
    #39501635
ВЫБРАЬ ИЗ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ART-CODE-2-ART-CODEдать пользователю возможность создавать свои фильтрыДай пользователю возможность писать sql. Почему-то все продукты издеваются над эргономикой, заставляя делать пользователя сотни кликов и драг-дропов в запутанных диалогах. В итоге приходится вместо простого текстового окна прикладывать неимоверные усилия и тратить время на множество экспериментов, чтобы разобраться, как получить тот или иной результат.
-2-,
Обеими руками "за",
если бы не уголовная ответстенность в случае, если в результате такого решения "что-то пойдет не так".
Все слишком серьезно в этот раз.
Полагаю, следует разработать собственный диалект SQL, который, ко всему, на этот раз, наконец-то окажется действительно дружественен для клерков.
...
Рейтинг: 0 / 0
Создание конструктора фильтров
    #39501638
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВЫБРАЬ ИЗсобственный диалект SQL,
DSL тоже вариант.
...
Рейтинг: 0 / 0
Создание конструктора фильтров
    #39501718
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, идея!
Не надо мне генерить ни SQL, ни хранимки

Достаточно написать одну хранимку, которая работает с одним контролируемым параметром и умеет делать для него абсолютно все виды проверок - при этом - ветвлением через IF переходим на нужную в этот раз проверку, а
затем продолжаем в цикле вызов хранимки для другого
контролируемого параметра или выходим, если получили "стоп" - результат.
Создать только группы элементарных взаимосвязанных проверок с условиями переходов и остановок.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Создание конструктора фильтров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]