| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Firebird, Interbase > представление vs просто_запрос vs хр_процедура |
| Автор: Aprol 26.8.2007, 16:55 | ||||
1)Давайте все же обсудим что же лучше для использования например такого кода:
То есть выборка из таблицы. Что является плюсами и минусами у этих способов получения данных? 2)и почему нельзя создать представление с параметром?
|
| Автор: Bose 26.8.2007, 17:36 |
| По-моему не совсем корректно поставлен вопрос. Что лучше использовать, в большей степени зависит от того, что именно нужно получить. Если нужно просто выбрать все записи только из одной таблицы без фильтров, то лучше всего прямой select * from table1 Если нужно из одной таблицы выбирать несколько наборов данных по не изменяющимся критериям, то лучше наверное использовать VIEW. А если при выборке нужно помимо данных из основной таблицы, эти данные нужно ещё и обработать(в зависимости от каких-либо условий(if .. then)), то лучшим вариантом будут процедуры. |
| Автор: Aprol 26.8.2007, 18:04 |
| У меня четвертый вариант выборка из нескольких таблиц и изменяющиеся параметры фильтрации |
| Автор: Bose 26.8.2007, 18:20 |
Тогда есть ещё 2 варианта: 1) Фильтр конструирется в приложении в виде строки для Where (...). Т.е. фактически, приложение само конструирует запрос. Выборка может идти из чего угодно, хотя сложные/медленные stored procedure лучше не использовать. 2) Создаётся Stored Procedure, в которая и возвращает отфильтрованный набор данных. Фильтры передаются в процедуру как входные параметры. |
| Автор: Aprol 26.8.2007, 18:43 | ||
| вся проблема что я не могу получить выборку в клиентском приложении .в delphi не могу замутить можно было бы сделать вот так
но мне сказали так плохо. |
| Автор: Anark1 27.8.2007, 09:36 |
| Aprol, можно задачу? В дельфи достаточно средств для работы с InterBase. И почему не можешь получить эту самую выборку? Для работы с ХП есть TIBStoredProc. Для выполнения запросов TIBDataSet. |
| Автор: ksili 1.9.2007, 09:55 |
Почему плохо? Если тебе нужны все поля, пиши *, если не все, то пиши в запросе конкретно какие нужны |
| Автор: Akella 7.9.2007, 16:43 |
| Aprol, ничё не понял, то ты одно хочешь обсудить, то потом у тебя какой-то четвёртый вариант, ты определись, что ты хочешь знать |
| Автор: Aprol 9.9.2007, 12:39 | ||
| Упс я под table1 имел ввиду хранимую процндуру. Просто нужна выборка, использовать query не хочется ввиду большей безопасности хр. процедур. Вот поэтому такой код будет приемлим?
|
| Автор: Akella 10.9.2007, 10:07 | ||
а чем опасен
|
| Автор: Aprol 11.9.2007, 08:47 |
| Ну вот я использую например ibquery, а разве какой-нибудь злоумышленник не сможет изменить запрос и взять конфиденциальные данные из базы? |
| Автор: ksili 11.9.2007, 08:49 | ||
это тоже запрос - запрос результатов процедуры |
| Автор: Akella 12.9.2007, 09:17 |
конечно, можно же и внутренности процедуры изменить |