|
|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : Victor Metelitsa 2:5020/400 24 Jan 2002 15:14:27 To : Tolik Tentser Subject : Re: в чем зло хранимых проце дур-2 --------------------------------------------------------------------------------
Tolik Tentser wrote:
> Hi, Victor Metelitsa!
>
> В чреве акулы, пойманной Wed, 23 Jan 2002 12:56:15 +0000 (UTC),
> дети капитана Гранта нашли письмо на тему 'Re: в чем зло хранимых
> проце дур-2':
>>>_Hе все_ можно получить одним запросом. Более, того, в ряде этих
>>>случаев результатом должна стать только модификация БД. Все это
>>>(без вытаскивания на клиент/промежуточное звено, HЕHУЖHОЕ!) можно
>>>сделать _только_ через SP.
>>>
>>>
>>Hаиболее характерные примеры, пожалуйста.
>>
>
> Прямо из жизни:
>
> Резервирование товара в заказ, при котором надо (действительно надо):
> - получить остатки по разным сериям этого товара
> - в зависимости от количества единиц в упаковке и заказанного
> количества подобрать серии наиболее подходящим образом (если берет
> упаковками - то из серии с большим остатком, чтобы была одна, если
> меньше упаковки - то из серии с малым остатком, чтобы не залеживалось)
> - проверить, требуется ли регистрация препарата в регионе клиента и
> зарегистрирована ли отобранная серия, при необходимости
> зарезервировать 1 штуку для регистации (списать со склада и добавить в
> резерв на регистрацию)
> - списать товар со склада
> - добавить товар в заказ
>
> (кстати, это примерно половина требуемых действий)
>
> Итого, не считая выборок - до четырех вставок в таблицу операций (два
> расхода, два прихода)
>
> Все то само собой в транзакции, да еще и REPEATABLE READ, да таких
> транзакций в день выполняется (не считая всего другого) десятки тысяч,
> так что обмен по сети во время таковой крайне нежелателен.
>
> Хотелось бы посмотреть на SQL запрос, призванный сделать хотя бы
> вышеперечисленное
Hе один запрос, но без лишнего сетевого трафика.
Для каждого пункта заказа выполняется INSERT INTO ...,
благодаря чему отрабатывают триггеры, заполняя необходимое (или выкинув
исключение, если что не так);
остается забрать данные из таблиц.
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
* Origin: Talk.Mail.Ru (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/5364ab1ad16a.html, оценка из 5, голосов 10
|