База знаний предприятий


РАЗРАБОТКА СЕРВЕРНОЙ ЧАСТИ - часть 6


 

Хранимые процедуры представляют собой подпрограммы, реализованные на языке SQL.

Пример процедуры добавления данных для таблицы «Предприятия»:

ALTER PROCEDURE P_ENTR_INSERT

(

  PNAME VARCHAR(60) CHARACTER SET WIN1251, /*Название предприятия*/

  PADDRESS VARCHAR(60) CHARACTER SET WIN1251, /*Адрес предприятия*/

  PPHONE VARCHAR(30) CHARACTER SET WIN1251, /*Телефон предприятия*/

  PCOMMENT VARCHAR(300) CHARACTER SET WIN1251 /*Комментарий*/

)

AS

BEGIN

  INSERT INTO ENTERPRISES (NAME,ADDRESS,PHONE,COMMENT,ENTKEY) //добавление

данных в таблицу

  VALUES (:PNAME, :PADDRESS, :PPHONE, :PCOMMENT, 0);

END

 

В данной процедуре поступающие на вход данные добавляются в таблицу «Предприятия». При добавлении данных происходит автоматическое обращение к соответствующему генератору, и в поле ключа заносится уникальное значение.

 

Пример хранимой процедуры выдачи информации о количестве связанных записей с каждой записью таблицы «Предприятия», хранящихся в её подчинённых таблицах (т. е. выполняющей проверку на полноту):

ALTER PROCEDURE CHECK_FOR_FULL_ENTR

RETURNS

(

  ENTK INTEGER, /*Ключ записи в таблице «Предприятия»*/

  ECPARS INTEGER, /*Количество записей в таблице «Экономические показатели»*/

  MBASE INTEGER, /*Количество записей в таблице «Материальная база»*/

  SEC INTEGER, /*Количество записей в таблице «Режимы предприятия»*/

  ARCH INTEGER, /*Количество записей в таблице «Архив»*/

  IZD INTEGER /*Количество записей в таблице «Изделия»*/

)

AS

     BEGIN

       FOR SELECT ENTKEY FROM ENTERPRISES /*Для каждой записи из таблицы «Предприятия»…*/

       INTO :ENTK /*Выдаём ключ*/

       DO

       BEGIN

         SELECT COUNT(NUMBER) FROM ECONOMICPARAMS

         WHERE ENTKEY=:ENTK /*Выдаём кол-во связанных записей в таблице «Экономические показатели»*/

         INTO :ECPARS;

         SELECT COUNT(NUMBER) FROM MATHERIALBASE

         WHERE ENTKEY=:ENTK /*Выдаём кол-во связанных записей в таблице «Материальная база»*/

         INTO :MBASE;

         SELECT COUNT(SECKEY) FROM SECURITY

         WHERE ENTKEY=:ENTK /*Выдаём кол-во связанных записей в таблице «Режимы предприятия»*/

         INTO :SEC;

         SELECT COUNT(NUMBER) FROM ARCHIVE

         WHERE ENTKEY=:ENTK /*Выдаём кол-во связанных записей в таблице «Архив»*/

         INTO :ARCH;

         SELECT COUNT(IZDKEY) FROM IZDELIE

         WHERE ENTKEY=:ENTK /*Выдаём кол-во связанных записей в таблице «Изделия»*/

         INTO :IZD;

         SUSPEND; /*Передаём параметры (т. е. строку таблицы) клиенту */

       END

END

 

При обращении к процедуре для каждой записи таблицы предприятия производится подсчёт связанных с ней записей в подчинённых таблицах. На выходе процедуры – таблица с числовыми значениями.

Аналогично выполняется подсчёт в таблицах, связанных с таблицей «Изделия».

 




Начало  Назад  Вперед



Книжный магазин