Инструменты пользователя

Инструменты сайта


examination:bd:question35

Вопрос №35. Создание и использование хранимых процедур. Преимущества и недостатки.

Хранимые процедуры.

Практический опыт создания приложений обработки данных показывает, что ряд операций над данными, реализующих общую для всех пользователей логику и не связанных с пользовательским интерфейсом, целесообразно вынести на сервер. Однако, для написания процедур, реализующих эти операции стандартных возможностей SQL не достаточно, поскольку здесь необходимы операторы обработки ветвлений, циклов и т.д. Поэтому многие поставщики СУБД предлагают собственные процедурные расширения SQL (PL/SQL компании Oracle и т.д.). Эти расширения содержат логические операторы (IF … THEN … ELSE), операторы перехода по условию (SWITCH … CASE …), операторы циклов (FOR, WHILE, UNTIL) и операторы предачи управления в процедуры (CALL, RETURN). С помощью этих средств создаются функциональные модули, которые хранятся на сервере вместе с базой данных. Обычно такие модули называют хранимые процедуры. Они могут быть вызваны с передачей параметров любым пользователем, имеющим на то соотвествующие права. В некоторых системах хранимые процедуры могут быть реализованы и в виде внешних по отношению к СУБД модулей на языках общего назначения, таких как C или Pascal. Пример для СУБД PostgreSQL:

        CREATE FUNCTION <имя_функции> ([<тип_параметра1>,...<тип_параметра2>])
            RETURNS <возвращаемые_типы>
            AS [ <SQL_оператор> | <имя_объектного_модуля> ]
            LANGUAGE 'SQL' | 'C' | 'internal'

Вызов созданной функции осуществялется из оператора SELECT (также, как вызываются функции агрегирования). Более подробно о хранимых процедурах см. статью Э.Айзенберга Новый стандарт хранимых процедур в языке SQL, СУБД N 5-6, 1996 г.

examination/bd/question35.txt · Последние изменения: 2014/01/15 12:12 (внешнее изменение)