double arrow

Хранимые процедуры и их назначение

Хранимая процедура – отдельная программа, написанная на SQL для процедур и триггеров InterBase. Сами процедуры хранятся в базе данных. Хранимые процедуры позволяют вести поиск и обработку дан­ных непосредственно на сервере, обеспечивая максимальную независи­мость клиентской части приложений. В них могут использоваться лю­бые конструкции SQL для процедур и триггеров (см. следующий раз­дел), кроме контекстных переменных NEW.column, OLD.column, применимых только в триггерах. Они, как обычные программы, могут получать входные параметры и возвращать значения вызвавшим их приложениям. Кроме того, могут возвращать не только отдельный набор значений – строку, но и множество строк, которое можно рассмат­ривать как виртуальную таблицу.

Хранимая процедура может также вызываться непосредственно из приложения или других хранимых процедур или триггеров. Хранимые процедуры, возвращающие множество строк, можно использовать в ко­манде SELECT на месте таблиц или обзоров.

Использование хранимых процедур дает ряд преимуществ:

  • Модульность проектирования. Приложения, которые обращаются к одной базе данных, могут совместно использовать хранимые процедуры, устраняя двойной код, уменьшая размер приложений и устраняя потенциальные ошибки.
  • Локализация изменений. Если процедура модифицируется, то все внесенные изменения автоматически отражаются во всех прило­жениях, которые используют процедуру, обеспечивая их согласо­ванность. При этом нет необходимости в перетрансляции и переком­поновке приложений.
  • Ускорение обработки. Хранимые процедуры выполняются серве­ром, а не клиентом, что позволяет ускорить обработку запросов и сократить сетевой трафик. Последнее особенно важно для уда­ленного клиентского доступа.

Процедуры по своему назначению разделяются на два вида: выпол­нимые процедурыи процедуры выбора.

Выполнимая процедураэто обычная программа, которая получает несколько (возможно, и ноль) параметров, выполняет какие-либо дейст­вия в базе данных и возвращает несколько (возможно, и ноль) значений.

Процедура выбораэто программа, которая получает несколько (возможно, и ноль) параметров, выполняет какие-либо действия в базе Данных и возвращает множество (возможно, пустое) наборов значений. Другими словами, процедура выбора создает вычисляемую таблицу, хотя такая таблица никуда и не записывается. Это позволяет обращаться к процедуре, как к таблице, используя команду SELECT.

Синтаксически можно обращаться к выполнимой процедуре, как к процедуре выбора (может понадобиться включение оператора SUSPEND в тело процедуры для корректного вывода результата), получая при этом в ответ в точности одну строку, а к процедуре выбора, как к выполнимой, получая при этом в ответ пер­вую строку формируемой таблицы. Ценность такой инверсии обраще­ний в лучшем случае нулевая, поэтому, несмотря на отсутствие прямого запрета ее использования, нет оснований для практического применения инверсных вызовов хранимых процедур. Например:

SELECT RESULT FROM MODULUS (12, 5);

Или EXECUTE PROCEDURE MODULUS 12, 5;


Сейчас читают про: