Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Система аналитической платформы (PDW)
SQL база данных в Microsoft Fabric
В этой статье описывается, как создать хранимую процедуру SQL Server с помощью SQL Server Management Studio и с помощью инструкции Transact-SQL CREATE PROCEDURE.
Permissions
Для выполнения этой инструкции требуется разрешение CREATE PROCEDURE в отношении базы данных и разрешение ALTER в отношении схемы, в которой создается процедура.
Создание хранимой процедуры
Для выполнения хранимой процедуры можно использовать SQL Server Management Studio (SSMS) или Transact-SQL в окне запроса SSMS. Установите последнюю версию SQL Server Management Studio (SSMS).
Note
В примере хранимой процедуры в этой статье используется пример AdventureWorksLT2022 базы данных (SQL Server) или AdventureWorksLT (База данных SQL Azure). Инструкции по получении и использовании примеров AdventureWorksLT баз данных см. в примерах баз данных AdventureWorks.
Использование SQL Server Management Studio
Чтобы создать хранимую процедуру в SSMS, выполните приведенные ниже действия.
В обозреватель объектов подключитесь к экземпляру SQL Server или База данных SQL Azure.
Дополнительные сведения см. в следующих кратких руководствах.
Разверните экземпляр и разверните базу данных.
Разверните нужную базу данных и разверните узел Programmability.
Щелкните правой кнопкой мыши хранимые процедуры и выберите "Новая>хранимая процедура". Откроется новое окно запроса с шаблоном для хранимой процедуры.
Шаблон хранимой процедуры по умолчанию имеет два параметра. Если хранимая процедура имеет меньше, больше или нет параметров, добавьте или удалите строки параметров в шаблоне соответствующим образом.
В меню Запрос выберите пункт Задание значений для параметров шаблона.
В диалоговом окне "Указать значения для параметров шаблона" укажите следующие сведения для полей "Значение".
-
Автор: замените
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 в новом окне запроса, указав значения для любых параметров, а затем нажмите кнопку "Выполнить". Подробные инструкции см. в разделе "Выполнение хранимой процедуры".