Dronton2
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Alexzzy Цитата: "Огласите весь список, пожалуйста" | Я работаю с Oracle . Чуть погуглил и нашёл ещё PostgreSQL . Помню, что когда-то давно, когда начальство решило, что нужно срочно (желательно - вчера) сделать разграничение прав пользователей по отделам и ещё нескольким критериям, то всё решение заняло полдня: несколько часов на изучение документации и полчаса на написание политик. И это вместо исправления нескольких сотен запросов на клиенте и на сервере. Цитата: Процедура возвращающая курсор - в голове не укладывается. По подробнее можно? И какая СУБД? | Oracle. Код: begin MyProcedure(:rc, :id, : params); end; | Это текст запроса от клиента к серверу. Работает, по крайней мере, на DOA и ODAC. Где: - rc: возвращаемый курсор - id: id запроса. Внутри процедуры есть конструкция CASE, которая для каждого требуемого id выполняет свои действия, строит запрос, открывает курсор к запросу и возвращает этот курсор. - params: строка с параметрами, которую получает процедура от пользователя. Внутри процедуры строка расшифровывается и получается словарь, состоящий из пар: название_параметра и значение_параметра. Правильнее было бы передавать в процедуру готовый словарь, но я не стал заморачиваться. У меня на этом построена система отчётов. Есть таблица со списком отчётов и таблица с названиями (и типом) параметров к каждому отчёту. id - id отчёта. params - список (словарь), содержащий пары: id параметра отчёта и заполненное пользователем значение параметра. StalkerSoftware Цитата: А вот с чтением данных, создание такой SP гораздо сложнее, особенно если запросы генерируются из программы динамически. | Получив id запроса и набор параметров, внутри процедуры можно сформировать какой угодно запрос. Даже динамический. И ещё: если нужно что-то подправить в запросе, например, добавить новую колонку или параметр в отчёте, не нужно исправлять клиентское приложение, а затем обновлять его. Немножко правим процедуру на сервере и всё готово. И трафик от клиента к серверу немного уменьшается, т.к. текст вызова процедуры бывает в десятки раз короче текста запроса. | Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 14:58 13-02-2017 | Исправлено: Dronton2, 15:10 13-02-2017 |
|