В этом учебном пособии вы узнаете, как создавать и удалять процедуры в MariaDB с синтаксисом и примерами.
Что такое процедура в MariaDB?
В MariaDB процедура - это хранимая программа, в которую можно передавать параметры. Она не возвращает значение, как это делает функция.
Создать процедуру
Как вы можете создавать процедуры на других языках, вы можете создавать свои собственные процедуры в MariaDB. Давайте внимательнее посмотрим.
Синтаксис
Синтаксис создания процедуры в MariaDB:
[ DEFINER = { CURRENT_USER | user_name } ]
PROCEDURE procedure_name [ (parameter datatype [, parameter datatype]) ]
[ LANGUAGE SQL
| DETERMINISTIC
| NOT DETERMINISTIC
| { CONTAINS SQL
| NO SQL
| READS SQL DATA
| MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'comment_value'
BEGIN
declaration_section
executable_section
END;
- DEFINER clause
- Необязательный. Если не указано, определителем является пользователь, создавший процедуру. Если вы хотите указать другой определитель, вы должны включить предложение DEFINER, где user_name является определителем для процедуры.
- procedure_name
- Имя, которое нужно присвоить этой процедуре в MariaDB.
- parameter
- Один или несколько параметров переданы в процедуру. При создании процедуры есть три типа параметров, которые могут быть объявлены:
- IN. На параметр можно ссылаться в процедуре. Значение параметра не может быть перезаписано процедурой.
- OUT. Процедура не может ссылаться на параметр, но значение параметра может быть перезаписано процедурой.
- IN OUT. На параметр может ссылаться процедура, а значение параметра может быть перезаписано процедурой.
- LANGUAGE SQL
- Это в синтаксисе для мобильности, но не будет влиять на функцию.
- DETERMINISTIC
- Это означает, что функция всегда будет возвращать один результат при заданном наборе входных параметров.
- NOT DETERMINISTIC
- Это означает, что функция может возвращать другой результат при заданном наборе входных параметров. На результат могут влиять данные таблицы, случайные числа или переменные сервера.
- CONTAINS SQL
- По умолчанию. Это информативное предложение, которое сообщает MariaDB, что функция содержит SQL, но база данных не проверяет, что это правда.
- NO SQL
- Это информативное предложение, которое не используется и не повлияет на функцию.
- READS SQL DATA
- Это информативное предложение, которое сообщает MariaDB, что функция будет читать данные, используя операторы SELECT, но не изменяет никаких данных.
- MODIFIES SQL DATA
- Это информативное предложение, которое сообщает MariaDB, что функция будет изменять данные SQL, используя INSERT, UPDATE, DELETE или другие операторы DDL.
- declaration_section
- Место в процедуре, где вы объявляете локальные переменные.
- executable_section
- Место в процедуре, где вы вводите код для процедуры.
Пример
Рассмотрим пример, который показывает, как создать процедуру в MariaDB:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
DELIMITER // CREATE procedure CalcValue ( OUT ending_value INT ) DETERMINISTIC BEGIN DECLARE total_value INT; SET total_value = 50; label1: WHILE total_value <= 3000 DO SET total_value = total_value * 2; END WHILE label1; SET ending_value = total_value; END; // DELIMITER ; |
Затем вы можете ссылаться на вашу новую процедуру следующим образом:
1 2 3 |
CALL CalcValue (@variable_name); SELECT @variable_name; |
Удалить процедуру
После того как вы создали свою процедуру в MariaDB, вы можете обнаружить, что вам нужно удалить ее из базы данных.
Синтаксис
Синтаксис удаления процедуры в MariaDB:
- procedure_name
- Название процедуры, которую вы хотите удалить.
Пример
Рассмотрим пример того, как удалить процедуру в MariaDB.
Например:
1 |
DROP procedure CalcValue; |
В этом примере удаляется процедура с именем CalcValue.