Хранимые процедуры в MySQL — это заранее скомпилированные наборы SQL-команд, которые хранятся на сервере и могут быть вызваны с помощью оператора CALL для выполнения повторяющихся или сложных задач. Они повышают производительность, уменьшая сетевой трафик и необходимость повторного анализа запросов, а также улучшают безопасность, скрывая структуру базы данных и контролируя доступ. Процедуры могут принимать параметры, возвращать наборы данных и используются для автоматизации, стандартизации и упрощения разработки приложений.
Хранимые процедуры в MySQL аналогичны процедурам в других языках программирования:
Создание хранимой процедуры
CREATE PROCEDURE getAllClients() BEGIN SELECT * FROM clients; END # вызов процедуры CALL getAllClients();
Удаление хранимой процедуры
DROP PROCEDURE getAllProducts;
В MySQL Workbench необходимо так же использовать функцию DELIMITER при создании хранимых процедур. Это разделитель, без которой программа просто выдаст ошибку при чтении запроса.
Use Cars_shop; DELIMITER | DROP PROCEDURE getAllProducts; | DELIMITER | CREATE PROCEDURE getAllProducts() BEGIN SELECT * FROM product; END | DELIMITER | CALL getAllProducts(); |
Процедурам так же можно передавать один или несколько параметров. Список передаваемых параметров необходимо учитывать при создании процедуры, а также при их вызове.
# создание процедуры с параметрами
DELIMITER |
CREATE PROCEDURE getAllProducts(IN pname nvarchar(30), IN startPrice int)
BEGIN
SELECT * FROM product WHERE name = pname AND price >= startPrice;
END
|
DELIMITER |
CALL getAllProducts('Samsung S24', 15000);
|