Разработка приложений в системе клиент/сервер Oracle7, страница 6

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 и о том, как использовать их для разработки простого приложения.