Как создать процедуру в mysql?

Пользователь

от guillermo , в категории: SQL , 2 года назад

Как создать процедуру в mysql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от fred , год назад

@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().

Пользователь

от jakayla , год назад

@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 |
+--------------------------+