Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Относится к:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
Система платформы аналитики (PDW)
База данных SQL в Microsoft Fabric
В этой статье описывается, как создать хранимую процедуру SQL Server с помощью SQL Server Management Studio и с помощью инструкции Transact-SQLCREATE PROCEDURE.
Permissions
Требуется право CREATE PROCEDURE в базе данных и право ALTER на схему, в которой создается процедура.
Создание хранимой процедуры
Для выполнения хранимой процедуры можно использовать SQL Server Management Studio (SSMS) или Transact-SQL в окне запроса SSMS. Установите последнюю версию SQL Server Management Studio (SSMS).
Note
В примере хранимой процедуры, приведённом в этой статье, используется учебная база данных AdventureWorksLT2022 (SQL Server) или AdventureWorksLT (База данных Azure SQL). Инструкции по получению и использованию AdventureWorksLT образцов баз данных см. в статье Образцы баз данных AdventureWorks.
Использование SQL Server Management Studio
Чтобы создать хранимую процедуру в SSMS, выполните приведенные ниже действия.
В обозреватель объектов подключитесь к экземпляру SQL Server или к базе данных SQL Azure.
Дополнительные сведения см. в следующих кратких руководствах:
Разверните экземпляр, а затем разверните Базы данных.
Разверните нужную базу данных, а затем разверните Программируемость.
Щелкните правой кнопкой мыши хранимые процедуры и выберите "Новая>хранимая процедура". Откроется новое окно запроса с шаблоном для хранимой процедуры.
Шаблон хранимой процедуры по умолчанию имеет два параметра. Если хранимая процедура имеет меньше, больше или нет параметров, добавьте или удалите строки параметров в шаблоне соответствующим образом.
В меню Запрос выберите пункт Задание значений для параметров шаблона.
В диалоговом окне "Указать значения для параметров шаблона" укажите следующие сведения для полей "Значение".
-
Автор: замените
Nameсвоим именем. - Дата создания: введите текущую дату.
- Описание. Кратко опишите, что делает процедура.
-
Procedure_Name. Замените
ProcedureNameновым именем хранимой процедуры. -
@Param1: Замените
@p1на имя первого параметра, например @ColumnName1. -
@Datatype_For_Param1: По мере необходимости замените
intна тип данных первого параметра, например nvarchar(50). -
Default_Value_For_Param1. При необходимости замените
0значением по умолчанию первого параметра или NULL. -
@Param2. Замените
@p2на имя второго параметра, например @ColumnName2. -
@Datatype_For_Param2: По мере необходимости замените
intна тип данных второго параметра, например nvarchar(50). -
Default_Value_For_Param2. При необходимости замените
0значением по умолчанию второго параметра или NULL.
На следующем снимку экрана показано готовое диалоговое окно для примера хранимой процедуры:
-
Автор: замените
Нажмите ОК.
В Редакторе запросов замените инструкцию SELECT запросом для вашей процедуры.
В приведённом ниже коде показан полный оператор CREATE PROCEDURE для примера хранимой процедуры:
-- ======================================================= -- Create Stored Procedure Template for Azure SQL Database -- ======================================================= SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE SalesLT.uspGetCustomerCompany ( -- Add the parameters for the stored procedure here @LastName nvarchar(50) = NULL, @FirstName nvarchar(50) = NULL ) AS /* -- ============================================= -- Author: My Name -- Create Date: 01/23/2024 -- Description: Returns the customer's company name. -- ============================================= */ BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON -- Insert statements for procedure here SELECT FirstName, LastName, CompanyName FROM SalesLT.Customer WHERE FirstName = @FirstName AND LastName = @LastName; END GOДля проверки синтаксиса выберите пункт Выполнить анализ в меню Запрос. Исправьте все ошибки.
Выберите "Выполнить" на панели инструментов. Процедура создается как объект в базе данных.
Чтобы просмотреть новую процедуру, указанную в обозреватель объектов, щелкните правой кнопкой мыши хранимые процедуры и выберите "Обновить".
Чтобы выполнить процедуру, выполните следующую команду:
В обозреватель объектов щелкните правой кнопкой мыши имя хранимой процедуры и выберите "Выполнить хранимую процедуру".
В окне "Выполнение процедуры" введите значения для всех параметров и нажмите кнопку "ОК". Подробные инструкции см. в разделе "Выполнение хранимой процедуры".
Например, чтобы выполнить
SalesLT.uspGetCustomerCompanyпример процедуры, введите Cannon для параметра @LastName и Криса для параметра @FirstName, а затем нажмите кнопку "ОК". Хранимая процедура выполняется и возвращаетFirstNameКрис,LastNameКэннон иCompanyNameАутдор Спортинг Гудс.
Important
Проверяйте все данные, вводимые пользователем. Не сцепляйте входные данные пользователя перед проверкой. Никогда не выполняйте команду, построенную на основании непроверенных пользовательских входных данных.
Использование Transact-SQL
Чтобы создать процедуру в Редактор запросов SSMS, выполните следующие действия.
В SSMS подключитесь к экземпляру SQL Server или Базе данных SQL Azure.
Выберите "Создать запрос " на панели инструментов.
Введите следующий код в окно запроса, заменив
<ProcedureName>имена и типы данных любых параметров и инструкцию SELECT собственными значениями.CREATE PROCEDURE <ProcedureName> @<ParameterName1> <data type>, @<ParameterName2> <data type> AS SET NOCOUNT ON; SELECT <your SELECT statement>; GOНапример, следующая инструкция создает ту же хранимую процедуру в
AdventureWorksLTбазе данных, что и предыдущий пример, с немного другим именем процедуры.CREATE PROCEDURE SalesLT.uspGetCustomerCompany1 @LastName nvarchar(50), @FirstName nvarchar(50) AS SET NOCOUNT ON; SELECT FirstName, LastName, CompanyName FROM SalesLT.Customer WHERE FirstName = @FirstName AND LastName = @LastName; GOВыберите "Выполнить" на панели инструментов, чтобы выполнить запрос. Создается хранимая процедура.
Чтобы запустить хранимую процедуру, введите инструкцию EXECUTE в новом окне запроса, указав значения для любых параметров, а затем нажмите кнопку "Выполнить". Подробные инструкции см. в разделе "Выполнение хранимой процедуры".