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

В SQL хранимые процедуры используются для выполнения набора SQL-запросов и логики на сервере базы данных. Они помогают инкапсулировать часто выполняемые действия, улучшить безопасность и производительность.

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

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

Хранимая процедура создаётся с помощью команды CREATE PROCEDURE. Она может принимать параметры и содержать SQL-запросы для выполнения различных задач.

Пример:

Создадим хранимую процедуру для получения информации о сотруднике по его идентификатору:

CREATE PROCEDURE GetEmployeeByID
    @EmployeeID INT
AS
BEGIN
    SELECT * FROM Employees
    WHERE EmployeeID = @EmployeeID;
END;

В этом примере:

  • GetEmployeeByID — имя процедуры.

  • @EmployeeID — параметр, который принимает идентификатор сотрудника.

  • SQL-запрос внутри процедуры выбирает все записи из таблицы Employees, где EmployeeID соответствует переданному значению.

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

Выходные параметры могут использоваться для возврата данных из процедуры.

Пример:

Создадим процедуру для получения имени и зарплаты сотрудника по его идентификатору:

CREATE PROCEDURE GetEmployeeDetails
    @EmployeeID INT,
    @FullName NVARCHAR(100) OUTPUT,
    @Salary DECIMAL(18, 2) OUTPUT
AS
BEGIN
    SELECT 
        @FullName = FirstName + ' ' + LastName,
        @Salary = Salary
    FROM Employees
    WHERE EmployeeID = @EmployeeID;
END;

В этом примере:

  • @FullName и @Salary — выходные параметры, которые будут возвращены после выполнения процедуры.

Вызов хранимых процедур

Вызов хранимой процедуры без параметров

Если процедура не принимает параметры, её можно вызвать просто используя её имя.

Пример:

EXEC GetEmployeeByID @EmployeeID = 1;

Вызов хранимой процедуры с выходными параметрами

Для вызова процедуры с выходными параметрами, необходимо сначала объявить переменные для хранения этих параметров, а затем использовать их в вызове процедуры.

Пример:

DECLARE @FullName NVARCHAR(100);
DECLARE @Salary DECIMAL(18, 2);

EXEC GetEmployeeDetails 
    @EmployeeID = 1,
    @FullName = @FullName OUTPUT,
    @Salary = @Salary OUTPUT;

-- Теперь @FullName и @Salary содержат возвращённые значения
SELECT @FullName AS EmployeeName, @Salary AS EmployeeSalary;

Обновление и удаление хранимых процедур

Обновление хранимой процедуры

Для изменения существующей хранимой процедуры используется команда ALTER PROCEDURE.

Пример:

ALTER PROCEDURE GetEmployeeByID
    @EmployeeID INT
AS
BEGIN
    SELECT EmployeeID, FirstName, LastName, Position
    FROM Employees
    WHERE EmployeeID = @EmployeeID;
END;

Удаление хранимой процедуры

Для удаления хранимой процедуры используется команда DROP PROCEDURE.

Пример:

DROP PROCEDURE GetEmployeeByID;

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

Last updated