Данная статья посвящена хранимым функциям MySQL. Разберем простые примеры. Для начала создадим функцию HelloWorld
Пример простейшей функции без параметров
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
drop function if exists HelloWorld; DELIMITER // CREATE FUNCTION HelloWorld() RETURNS VARCHAR(20) DETERMINISTIC BEGIN DECLARE result varchar(30); SET result = 'HELLO WORLD'; RETURN (result); END// DELIMITER ; select HelloWorld(); |
Результат
Пример функции с параметрами
Теперь разберем результат посложнее. Добавим параметры. По умолчанию в хранимых функциях все параметры типа IN, то есть входящие параметры.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
drop function if exists plus; DELIMITER // CREATE FUNCTION plus(a int,b int) RETURNS int DETERMINISTIC BEGIN DECLARE result INT; SET result = a+b; RETURN (result); END// DELIMITER ; Select plus(4,7); |
Результат
Немного разберем код. Если по параметрам все более менее понятно, то непонятно по слову Deterministic. Это слово означает, что результат функции будет повторяться от итерации к итерации при одних и тех же параметрах. Если это не так, то пишут NOT DETERMENISTIC. Подробнее об этом можно почитать в документации
Насколько я понял, когда мы используем функции рандома или любые другие функции, которые приводят к неповторяющемуся результату, то тогда мы должны писать NOT DETERMENISTIC.
Как посмотреть список хранимых функций на сервере?
Пользуясь таблицей из официальной документации можем построить такой запрос
1 |
select name from mysql.proc where type='function' |
Этот запрос выдаст все функции по всем базам данных, если нам нужно уточнить какую-то базу данных, то можно написать
1 |
select name from mysql.proc where type='function' and db='test_db'; |
Результат будет примерно таким…