Создание хранимой процедуры

Применимо к: даSQL Server (все поддерживаемые версии) ДаБаза данных SQL Azure ДаУправляемый экземпляр SQL Azure даAzure Synapse Analytics даПараллельное хранилище данных

В этом разделе описывается, как можно создать хранимую процедуру Transact-SQL в среде SQL Server Management Studio с использованием инструкции Transact-SQL CREATE PROCEDURE.

Разрешения

Для выполнения этой инструкции требуется разрешение CREATE PROCEDURE в отношении базы данных и разрешение ALTER в отношении схемы, в которой создается процедура.

Создание хранимой процедуры

Можно использовать один из следующих способов:

Использование среды SQL Server Management Studio

Создание процедуры в обозревателе объектов

  1. В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine и разверните его.

  2. Последовательно разверните узел Базы данных, базу данных AdventureWorks2012 и узел Программирование.

  3. Щелкните правой кнопкой мыши элемент Хранимые процедуры и выберите пункт Создать хранимую процедуру.

  4. В меню Запрос выберите пункт Указать значения для параметров шаблона.

  5. В диалоговом окне Задание значений для параметров шаблона введите для показанных параметров следующие значения.

    Параметр Значение
    Автор Ваше имя
    Дата создания Сегодняшняя дата
    Описание Возвращает данные о сотрудниках.
    Procedure_name HumanResources.uspGetEmployeesTest
    @Param1 @LastName
    @Datatype_For_Param1 nvarchar(50)
    Default_Value_For_Param1 NULL
    @Param2 @FirstName
    @Datatype_For_Param2 nvarchar(50)
    Default_Value_For_Param2 NULL
  6. Нажмите кнопку ОК.

  7. В редакторе запросов замените инструкцию SELECT следующей инструкцией:

    SELECT FirstName, LastName, Department  
    FROM HumanResources.vEmployeeDepartmentHistory  
    WHERE FirstName = @FirstName AND LastName = @LastName  
        AND EndDate IS NULL;  
    
  8. Для проверки синтаксиса выберите пункт Выполнить анализ в меню Запрос. Если возвращается сообщение об ошибке, сравните инструкции с приведенными выше и при необходимости внесите исправления.

  9. Чтобы создать процедуру, в меню Запрос выберите пункт Выполнить. Процедура создается как объект в базе данных.

  10. Чтобы увидеть процедуру в обозревателе объектов, щелкните правой кнопкой мыши элемент Хранимые процедуры и выберите пункт Обновить.

  11. Чтобы выполнить процедуру, в обозревателе объектов щелкните правой кнопкой мыши имя хранимой процедуры HumanResources.uspGetEmployeesTest и выберите пункт Выполнение хранимой процедуры.

  12. В окне Выполнение процедуры введите Margheim в качестве значения для параметра @LastName и Diane в качестве значения для параметра @FirstName.

Предупреждение

Проверяйте все данные, вводимые пользователем. Не включайте их в сценарий, не выполнив проверку. Никогда не выполняйте команду, построенную на основании непроверенных пользовательских входных данных.

Использование Transact-SQL

Создание процедуры в редакторе запросов

  1. В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.

  2. В меню Файл выберите пункт Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В данном примере создается та же хранимая процедура, что и раньше, но с другим именем процедуры.

    USE AdventureWorks2012;  
    GO  
    CREATE PROCEDURE HumanResources.uspGetEmployeesTest2   
        @LastName nvarchar(50),   
        @FirstName nvarchar(50)   
    AS   
    
        SET NOCOUNT ON;  
        SELECT FirstName, LastName, Department  
        FROM HumanResources.vEmployeeDepartmentHistory  
        WHERE FirstName = @FirstName AND LastName = @LastName  
        AND EndDate IS NULL;  
    GO  
    
    
  4. Чтобы выполнить процедуру, скопируйте следующий пример в окно создаваемого запроса и нажмите кнопку Выполнить. Показаны различные методы задания значений параметров.

    EXECUTE HumanResources.uspGetEmployeesTest2 N'Ackerman', N'Pilar';  
    -- Or  
    EXEC HumanResources.uspGetEmployeesTest2 @LastName = N'Ackerman', @FirstName = N'Pilar';  
    GO  
    -- Or  
    EXECUTE HumanResources.uspGetEmployeesTest2 @FirstName = N'Pilar', @LastName = N'Ackerman';  
    GO  
    
    

Следующие шаги

CREATE PROCEDURE (Transact-SQL)