Функции Multi-statement комбинируют способность скалярных функций содержать сложный программный код со способностью внедренных табличных функций возвращать результирующий набор данных в виде таблицы. Этот тип функций создает табличную переменную, а затем заполняет ее в теле функции. Сформированная таблица возвращается функцией и может использоваться в инструкциях SELECT. Преимущество функций Multi-statement - возможность формировать результат с помощью пакета инструкций, а затем напрямую использовать этот набор данных в инструкциях SELECT.
В общем виде синтаксис табличной функции с множеством инструкций можно представить в виде:
Пример.
1.4. Хранимые процедуры
При создании приложения, интегрированного с SQL Server, возникает проблема организации программного взаимодействия с БД. Для решения этой задачи имеются две основные возможности:
· формировать команды SQL на стороне клиента, а затем посылать эти команды на сервер для выполнения;
· перенести часть программного кода на сторону сервера.
Последний подход лучше, т.к. позволяет отделить интерфейс пользователя от интерфейса данных и в результате уменьшить вероятность ошибок и повысить защиту данных. При этом также уменьшается передача данных по сети. Одно из средств реализации такого подхода – хранимые процедуры, которые чаще всего используются в качестве программных модулей на стороне сервера.
Хранимые процедуры представляют собой фрагменты программного кода на Transact-SQL, которые выполняются на сервере. Они могут запускаться вызывающим их приложением, правилами проверки целостности данных или триггерами. Хранимая процедура может иметь параметры, позволяющие передавать в нее и получать обратно значения, выбираемые из таблиц или вычисляемые при выполнении процедуры.
Основное преимущество хранимых процедур - высокая оперативность обработки информации, обусловленная использованием, как правило, мощного компьютера-сервера и тем, что для доступа к данным не тратится лишнее время, поскольку БД размещается на сервере.
В сравнении с использованием динамических операторов языка SQL хранимые процедуры работают быстрее, т.к. они компилируются при первом выполнении с использованием оптимизации доступа к информации из таблиц.
По области видимости различают хранимые процедуры следующих четырех типов: системные (System), локальные (Local), временные (Temporary) и удаленные (Remote).
Системные хранимые процедуры размещаются в системной БД Master, используются сервером и администратором. Имена системных процедур начинаются с символов sp_. Для создания собственной системной хранимой процедуры нужно присвоить ей имя, начинающееся с sp_, и поместить ее в системную БД Master. Системные хранимые процедуры предназначены для выполнения различных административных действий. Практически все действия по администрированию сервера выполняются с их помощью. Можно сказать, что системные хранимые процедуры являются интерфейсом, обеспечивающим работу с системными таблицами. Системные хранимые процедуры могут быть вызваны в контексте любой другой БД.
Локальные хранимые процедуры размещаются в пользовательских БД.
Временные хранимые процедуры имеют имена, начинающиеся с символов # или ##. Процедуры с одним символом # в начале имени являются временными локальными процедурами и доступны из соединения (сессии), в котором они были созданы. При закрытии этого соединения процедура автоматически уничтожается. Процедуры с двумя символами ## в начале имени являются временными глобальными процедурами и доступны в любой сессии работы с данным сервером.
Удаленные хранимые процедуры можно вызывать с сервера, отличного от текущего сервера. При этом текущий сервер играет роль промежуточного звена. Кроме того, удаленную хранимую процедуру можно вызвать непосредственно с сервера, на котором она находится.
Еще одним типом хранимых процедур являются расширенные хранимые процедуры (extended stored procedures). Они пишутся на языке программирования (например, С). Расширенные хранимые процедуры оформляются как функции в составе библиотек динамических связей - DLL (Dynamic Link Library), что повышает скорость их выполнения. Имена расширенных хранимых процедур начинаются с символов хр_.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.