Разработка процедур с параметрами для работы с данными

Для создания процедур с параметрами в SQL важно понять, как они работают в различных СУБД. Давайте рассмотрим примеры для популярных систем управления базами данных: SQL Server (T-SQL), MySQL и PostgreSQL.

SQL Server (T-SQL)

Пример 1: Создание процедуры для вставки данных

CREATE PROCEDURE InsertEmployee
    @FirstName NVARCHAR(50),
    @LastName NVARCHAR(50),
    @Salary DECIMAL(10, 2)
AS
BEGIN
    INSERT INTO Employees (FirstName, LastName, Salary)
    VALUES (@FirstName, @LastName, @Salary);
END;

Пример 2: Создание процедуры для получения данных

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

Пример 3: Создание процедуры для обновления данных

CREATE PROCEDURE UpdateEmployeeSalary
    @EmployeeID INT,
    @NewSalary DECIMAL(10, 2)
AS
BEGIN
    UPDATE Employees
    SET Salary = @NewSalary
    WHERE EmployeeID = @EmployeeID;
END;

Пример 4: Создание процедуры для удаления данных

CREATE PROCEDURE DeleteEmployee
    @EmployeeID INT
AS
BEGIN
    DELETE FROM Employees
    WHERE EmployeeID = @EmployeeID;
END;

MySQL

Пример 1: Создание процедуры для вставки данных

DELIMITER //

CREATE PROCEDURE InsertEmployee(
    IN FirstName VARCHAR(50),
    IN LastName VARCHAR(50),
    IN Salary DECIMAL(10, 2)
)
BEGIN
    INSERT INTO Employees (FirstName, LastName, Salary)
    VALUES (FirstName, LastName, Salary);
END //

DELIMITER ;

Пример 2: Создание процедуры для получения данных

DELIMITER //

CREATE PROCEDURE GetEmployeeByID(
    IN EmployeeID INT
)
BEGIN
    SELECT * FROM Employees
    WHERE EmployeeID = EmployeeID;
END //

DELIMITER ;

Пример 3: Создание процедуры для обновления данных

DELIMITER //

CREATE PROCEDURE UpdateEmployeeSalary(
    IN EmployeeID INT,
    IN NewSalary DECIMAL(10, 2)
)
BEGIN
    UPDATE Employees
    SET Salary = NewSalary
    WHERE EmployeeID = EmployeeID;
END //

DELIMITER ;

Пример 4: Создание процедуры для удаления данных

DELIMITER //

CREATE PROCEDURE DeleteEmployee(
    IN EmployeeID INT
)
BEGIN
    DELETE FROM Employees
    WHERE EmployeeID = EmployeeID;
END //

DELIMITER ;

PostgreSQL

Пример 1: Создание процедуры для вставки данных

CREATE OR REPLACE FUNCTION InsertEmployee(
    FirstName VARCHAR,
    LastName VARCHAR,
    Salary NUMERIC
)
RETURNS VOID AS $$
BEGIN
    INSERT INTO Employees (FirstName, LastName, Salary)
    VALUES (FirstName, LastName, Salary);
END;
$$ LANGUAGE plpgsql;

Пример 2: Создание функции для получения данных

CREATE OR REPLACE FUNCTION GetEmployeeByID(EmployeeID INT)
RETURNS TABLE (EmployeeID INT, FirstName VARCHAR, LastName VARCHAR, Salary NUMERIC) AS $$
BEGIN
    RETURN QUERY
    SELECT EmployeeID, FirstName, LastName, Salary
    FROM Employees
    WHERE EmployeeID = EmployeeID;
END;
$$ LANGUAGE plpgsql;

Пример 3: Создание функции для обновления данных

CREATE OR REPLACE FUNCTION UpdateEmployeeSalary(
    EmployeeID INT,
    NewSalary NUMERIC
)
RETURNS VOID AS $$
BEGIN
    UPDATE Employees
    SET Salary = NewSalary
    WHERE EmployeeID = EmployeeID;
END;
$$ LANGUAGE plpgsql;

Пример 4: Создание функции для удаления данных

CREATE OR REPLACE FUNCTION DeleteEmployee(EmployeeID INT)
RETURNS VOID AS $$
BEGIN
    DELETE FROM Employees
    WHERE EmployeeID = EmployeeID;
END;
$$ LANGUAGE plpgsql;

Общие принципы

  • Параметры: Входные параметры (IN) используются для передачи данных в процедуру, выходные параметры (OUT) для возврата результатов, а параметры типа INOUT для передачи данных и их изменения в процессе выполнения процедуры.

  • Обработка ошибок: Рекомендуется добавлять обработку ошибок, чтобы процедура могла адекватно реагировать на возникшие проблемы.

  • Тестирование: После создания процедуры важно протестировать её с различными значениями параметров, чтобы убедиться, что она работает корректно.

Если у вас есть конкретные вопросы или задачи, связанные с процедурами в SQL, дайте знать!

Last updated