2.1.3. Изменение и удаление хранимых процедур
Чтобы обновить код процедуры, целесообразно использовать команду alterprocedure, которая синтаксически мало отличается от createprocedure:
alter proc[edure] имя_процедуры
[{@параметр тип_параметра [varying] [= значение] [output]}
[,…n]]
as тело_процедуры
Смысл всех секций и ключевых слов, используемых в этой команде, пояснялся ранее. Разумеется, в alterprocedure задается имя существующей процедуры – оно остается неизменным. Только список параметров и тело процедуры могут быть изменены.
Команда удаления процедур – dropprocedure. В качестве параметра принимает имя или список имен удаляемых процедур.
2.1.4. Пользовательские функции
Функция отличается от процедуры тем, что она всегда возвращает некоторое значение и может присутствовать в выражениях как операнд. В лабораторной работе №3 были частично рассмотрены некоторые встроенные функции SQL Server. Но разработчики БД имеют возможность создавать собственные функции средствами Transact-SQL.
Выделяют следующие типы пользовательских функций.
1. Скалярные функции. Возвращают скалярное значение любого из типов данных, за исключением timestamp, text, ntext, image, table и cursor.
2. Встроенные функции (Inline-функции). Возвращают значение типа table. Их тело включает только оператор select. Особенностью встроенных функций является то, что их код вставляется непосредственно в команды, из которых они вызываются.
3. Табличные функции типа Multi-statement(Multi-statement Table-valued). Возвращают значение типа данных table. Однако, в отличие от встроенных функций, они могут содержать в своем теле несколько SQL-операторов, вызовы процедур, обработку курсоров и т. д.
Создание пользовательских функций в Transact-SQL выполняется при помощи оператора createfunction. Transact-SQL поддерживает три варианта записи этого оператора, по одному для каждого типа функций.
Синтаксис оператора создания скалярной функции выглядит следующим образом:
create function имя_функции (
[{@параметр скалярный_тип_данных [= значение]} [,…n]] )
returns скалярный_тип_данных
[as]
begin
тело_функции
return выражение
end
Параметры в скалярных функциях имеют только скалярный тип. А тип возвращаемого значения указывается после ключевого слова returns.
Тело функции заключается в операторные скобки begin…end. Хотя бы один раз в нем должна встретиться команда return с указанием после нее результата, который нужно вернуть вовне – это есть значение функции. Результат должен иметь тип, указанный после ключевого слова returns в заголовке.
Замечание. Команда return может использоваться и в хранимых процедурах для организации досрочного выхода. Но в этом случае возвращаемый результат после ключевого слова return не указывается.
Оператор создания встроенных функций имеет следующий синтаксис:
create function имя_функции (
[{@параметр скалярный_тип_данных [= значение]} [,…n]] )
returnstable
[as]
return запрос
Нетрудно заметить, что отличие этого оператора заключается в явном задании типа возвращаемого значения – table. После ключевого слова as не допускается указание конструкции begin…end, а разрешается только использование единственного запроса select. Набор строк, выдаваемый по этому запросу, становится результирующим возвращаемым значением.
Функции Multi-statement создаются с помощью варианта команды createfunction, имеющего следующий синтаксис:
create function имя_функции (
[{@параметр скалярный_тип_данных [= значение]} [,…n]] )
returns @локальная_переменная table <определения_столбцов>
[as]
begin
тело_функции
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.