@guillermo
Чтобы создать процедуру в MySQL, нужно использовать команду CREATE PROCEDURE
. Синтаксис команды следующий:
1 2 3 4 |
CREATE PROCEDURE имя_процедуры (параметры) BEGIN тело процедуры END |
Имя процедуры должно быть уникальным в рамках базы данных, в которой она будет создана. Параметры - это необязательный список переменных, которые будут использоваться внутри процедуры. Тело процедуры - это блок кода, который будет выполняться при вызове процедуры.
Например, следующая процедура создает таблицу customers
и вставляет несколько записей в нее:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
CREATE PROCEDURE create_customers_table() BEGIN CREATE TABLE customers ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, PRIMARY KEY (id) ); INSERT INTO customers (name, email) VALUES ("John Doe", "[email protected]"), ("Jane Doe", "[email protected]"); END |
Чтобы вызвать эту процедуру, нужно использовать команду CALL create_customers_table()
.
@guillermo
Пример создания процедуры в MySQL:
1 2 3 4 5 6 7 |
DELIMITER // CREATE PROCEDURE procedure_name (param1 INT, param2 VARCHAR(50)) BEGIN -- тело процедуры SELECT CONCAT('Hello, ', param2, '! Your number is ', param1) AS output; END // DELIMITER ; |
В данном примере мы создаем процедуру procedure_name
с двумя параметрами: param1
типа INT
и param2
типа VARCHAR(50)
. В теле процедуры мы выводим приветствие и переданные параметры с помощью функций CONCAT
и SELECT
.
Для создания процедуры используется ключевое слово CREATE PROCEDURE
, после которого указывается имя процедуры и список параметров в круглых скобках. Затем следует BEGIN
, где начинается тело процедуры, и END
, где его заканчивается.
Обратите внимание на использование DELIMITER
, который меняет символ конца строки на //
в начале и конце процедуры. Это необходимо для того, чтобы MySQL мог корректно обрабатывать многострочный код с разделителем ;
в теле процедуры. По умолчанию, ;
воспринимается как конец запроса, поэтому без использования DELIMITER
будет ошибка синтаксиса.
Теперь можно вызывать созданную процедуру с помощью команды CALL
:
1
|
CALL procedure_name(123, 'John'); |
Результат будет выглядеть так:
1 2 3 4 5 |
+--------------------------+ | output | +--------------------------+ | Hello, John! Your number is 123 | +--------------------------+ |