UPDATE stock SET onhand = ...
INSERT INTO 'tem VALUES (2, ...)
UPDATE stock SET onhand = ...
INSERT into item VALUES (3, ...)
UPDATE stock SET onhand = ...
COMMIT;
Чтобы создать новый заказ и включить для этого заказа три вида продукции. приложение должно дать 7 различных операторов SQL. каждый из которых посылает данные по сети. Чтобы уменьшить генерируемый этими операторами в приложении клиент/сервер сетевой трафик, для вставки заказов и инвентарных единиц вы должны создать две простых процедуры:
CREATE PROCEDURE placeorder (custid IN INTEGER) AS
BEGIN
INSERT INTO огders
VALUES (orderseq.NEXTVAL, custid, SYSDATE, null, null, 'F');
END placeordsi;
CREATE PROCEDURE placeitem
(itemid IN INTEGER, partid IM INTEGER, quan IN INTEGER) AS
BEGIN
INSERT INTO item (id, orderid. stockid, quantity)
VALUES (itemid, orderseq.CURRVAL, partid, quan);
UPDATE stock
SET onhand=onhand— quan
WHERE id = partid;
END placeitem;
Теперь вместо операторов SQL для вставки нового заказа и инвентарных единиц приложение может просто вызвать процедуры:
placeorder (3);
placeitem (1,3,2);
placeitem(2,8,1);
placeitem(3,9,3);
Заметим, что, когда приложение вызывает хранимую процедуру, по сети передается только ее вызов и аргументы хранимой процедуры.
Пакеты Пакеты — это расширения простых хранимых процедур. Разработчики могут использовать их при создании приложений. Пакеты представляют собой способ организации и инкапсуляции родственных процедур и функций в один программный модуль. (О процедурах и пакетах подробнее рассказывается в лаве 13.)
Уведомления базы данных
Когда в базе данных происходят определенные события, пользователи должны получить уведомления. Благодаря этому, они могут выполнить соответствующие действия. Например, если вы заведуете складом, то важно знать, что число единиц некоторого товара на складе становится ниже той границы, когда нужно заказывать новую партию. Это позволяет вам заказать и получить товар до того, как он кончится.
Хорошее приложение должно включать в себя уведомление при возникновении определенных условии для автоматического предупреждения об этих условиях пользователей приложения. Например, при разработке системы управления складом вы можете проверять в программе, не снизилось ли количество наличных единиц ниже той границы, когда необходим новый заказ. Один из способов сделать это состоит в том, чтобы приложение управления складом давало SQL-запрос на те единицы, количество которых снизилось ниже точки повторного заказа:
—спрашивать склад каждые 5 минут...
SELECT id FROM stock
WHERE onhand < reorder
- -Другой код приложения, обрабатывающий уведомление
Такой метод проверки условий уведомления может создать в системах клиент/сервер ощутимые проблемы. Постоянный опрос создает интенсивный сетевой ввод-вывод, особенно когда множество пользователей одновременно запрашивает много условий. Более приемлемым способом опроса таких условий является использование средств уведомления базы данных Oracle7. При возникновении заданного события эти средства автоматически дают сигнал заинтересованным пользователям. С помощью простых вызовов процедур приложения могут регистрировать и ожидать возникновения условий уведомления. (Более подробно о средствах уведомления базы данных Oracle7 рассказывается в главе 18.)
Эта глава заложила основы для понимания процесса разработки приложений в СУБД клиент/сервер Oracle7. Теперь вы должны иметь четкое представление о том, что делает разработчик приложения, и что происходит в клиентной части приложения базы данных. В следующей главе рассказывается об инструментальных средствах Oracle7 и о том, как использовать их для разработки простого приложения.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.