Создание хранимой процедуры
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
В этой статье описывается, как создать хранимую процедуру SQL Server с помощью SQL Server Management Studio и с помощью инструкции Transact-SQL CREATE PROCEDURE.
Разрешения
Для выполнения этой инструкции требуется разрешение CREATE PROCEDURE в отношении базы данных и разрешение ALTER в отношении схемы, в которой создается процедура.
Создание хранимой процедуры
Для создания хранимой процедуры можно использовать пользовательский интерфейс SQL Server Management Studio (SSMS) или Transact-SQL в окне запроса SSMS. Всегда используйте последнюю версию SSMS.
Примечание.
В примере хранимой процедуры в этой статье используется пример 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 -- ============================================= -- Author: My Name -- Create Date: 01/23/2024 -- Description: Returns the customer's company name. -- ============================================= CREATE PROCEDURE SalesLT.uspGetCustomerCompany ( -- Add the parameters for the stored procedure here @LastName nvarchar(50) = NULL, @FirstName nvarchar(50) = NULL ) AS 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
открытые спортивные товары.
Внимание
Проверяйте все данные, вводимые пользователем. Не сцепляйте входные данные пользователя перед проверкой. Никогда не выполняйте команду, построенную на основании непроверенных пользовательских входных данных.
Использование 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 в новом окне запроса, указав значения для любых параметров, а затем нажмите кнопку "Выполнить". Подробные инструкции см. в разделе "Выполнение хранимой процедуры".