Практическое руководство. Создание хранимых процедур и пользовательских функций
В обозревателе сервера можно создавать хранимые процедуры.При помощи хранимых процедур можно определять сложные бизнес-правила, управлять изменением данных, ограничивать доступ с использованием разрешений доступа, обеспечивать целостность транзакций и в целом вести работу с базой данных в соответствии с потребностями приложения.
В Microsoft SQL Server 2000 и более поздних версиях в обозревателе сервера также доступно создание пользовательских функций.Пользовательская функция представляет собой процедуру, инкапсулирующую полезную логику для использования в других запросах.В то время как представления ограничены одной инструкцией SELECT, пользовательские функции могут содержать несколько инструкций SELECT и обеспечивать более эффективную логику, чем та, что доступна в представлениях.
Пользовательские функции всегда возвращают значение.В зависимости от типа возвращаемого значения пользовательские функции распределяются по трем категориям:
скалярная функция А определяемая пользователем функция может возвращать скалярное значение как целое число или отметка времени.Если функция возвращает скалярное значение, ее можно использовать в запросе везде, где может быть указано имя столбца.
встроенная функция Если определяемая пользователем функция содержит единственную инструкцию выборки и это выписка быть обновляемым, а также обновляемый табличный результат, возвращаемый функцией.Такие функции называются встроенными.Если встроенная функция возвращает таблицу, эту функцию можно использовать в предложении FROM другого запроса.Дополнительные сведения см. в разделе Практическое руководство. Создание запросов с использованием других источников, помимо таблиц.
Функции с табличным значением Если определяемая пользователем функция содержит более одной инструкции выборки или инструкцию, которая содержит образец невозможно обновить, а табличный результат, возвращаемый этой функцией не является обновляемым.Если табличная функция возвращает таблицу, эту функцию можно использовать в предложении FROM другого запроса.
Примечание |
---|
В следующих ниже примерах "dbo" — это акроним владельца базы данных, который используется для определения имени хранимой процедуры и пользовательской функции.Владелец базы данных является пользователем, который имеет неявные разрешения на выполнение любых действий в базе данных.Любой объект, созданный любым членом роли sysadmin, автоматически принадлежит dbo.В следующих ниже примерах включен квалификатор имени "dbo". |
Примечание |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Чтобы создать хранимую процедуру
В обозревателе сервера щелкните правой кнопкой мыши папку Хранимые процедуры или любую хранимую процедуру в этой папке.
В контекстном меню выберите команду Добавить новую хранимую процедуру.
Будет создана новая хранимая процедура, имеющая следующий каркас инструкций SQL:
CREATE PROCEDURE dbo.StoredProcedure1 /* ( @parameter1 datatype = default value, @parameter2 datatype OUTPUT ) */ AS /* SET NOCOUNT ON */ RETURN
Можно заменить переменную StoredProcedure1 в первой строке на имя новой процедуры.Например, можно указать имя MyProcedure:
CREATE PROCEDURE dbo.MyProcedure
Примечание Хранимые процедуры должны иметь уникальные имена.При выборе имени, которое уже присвоено другой хранимой процедуре, будет выведено сообщение об ошибке, предупреждающее, что хранимая процедура с таким именем уже существует.
Введите оставшийся текст процедуры в SQL.
Дополнительные сведения о хранимых процедурах и примеры см. в документации по соответствующему серверу баз данных.При использовании Microsoft SQL Server см. в разделе ", чтобы СОЗДАТЬ ПРОЦЕДУРУ" в книгах SQL Server, подключенных.
Чтобы создать пользовательскую функцию
В обозревателе сервера щелкните правой кнопкой мыши папку Функции или любую функцию в этой папке.
Установите указатель мыши на пункте Добавить новый, а затем выберите в контекстном меню пункт Встроенная функция, Табличная функция или Скалярная функция.
Примечание Нельзя изменить каркас инструкций SQL новой функции в соответствии другим типом функции и сохранить результаты работы.Например, если начато создание встроенной функции, нельзя изменить инструкции SQL в соответствии с правилами скалярной функции.Процедура сохранения завершится неудачей.
Будет создана новая пользовательская функция с использованием каркаса инструкций SQL:Например, при выборе параметра Скалярная функция будет создан следующий каркас инструкций SQL:
CREATE FUNCTION dbo.Function1 ( /* @parameter1 datatype = default value, @parameter2 datatype */ ) RETURNS /* datatype */ AS BEGIN /* sql statement ... */ RETURN /* value */ END
Можно заменить Function1 в первой строке именем новой функции.Например, можно указать имя MyFunction:
CREATE FUNCTION dbo.MyFunction
Примечание Пользовательские функции должны иметь уникальные имена.При выборе имени, которое уже присвоено другой функции, будет выведено сообщение об ошибке, предупреждающее, что функция с таким именем уже существует.
Введите оставшийся текст функции в SQL.
Примечание |
---|
Если в контекстном меню отсутствуют нужные параметры, это может означать, что используемая версия Visual Studio не поддерживает данную возможность.Дополнительные сведения см. в разделе Выпуски визуальных инструментов для баз данных. |
Дополнительные сведения о пользовательских функциях и примеры см. в документации по соответствующему серверу баз данных.При использовании Microsoft SQL Server см. в разделе "create function" в книгах SQL Server, подключенных.
См. также
Основные понятия
Другие ресурсы
Работа с хранимыми процедурами и пользовательскими функциями