35.4. Пользовательские процедуры#

35.4. Пользовательские процедуры

35.4. Пользовательские процедуры #

Процедура - это объект базы данных, аналогичный функции. Основные отличия заключаются в следующем:

  • Процедуры определяются с помощью команды CREATE PROCEDURE, а не CREATE FUNCTION.

  • Процедуры не возвращают значение функции; поэтому CREATE PROCEDURE не имеет предложения RETURNS. Однако процедуры могут вместо этого возвращать данные своим вызывающим через выходные параметры.

  • В то время как функция вызывается в рамках запроса или команды DML, процедура вызывается в изоляции с использованием команды CALL.

  • Процедура может фиксировать или откатывать транзакции во время своего выполнения (а затем автоматически начинать новую транзакцию), при условии, что вызывающая команда CALL не является частью явного блока транзакции. Функция не может делать это.

  • Некоторые атрибуты функций, такие как строгость, не применяются к процедурам. Эти атрибуты контролируют, как функция используется в запросе, что не имеет отношения к процедурам.

Объяснения в следующих разделах о том, как определить пользовательские функции, применимы также к процедурам, за исключением указанных выше моментов.

Вместе функции и процедуры также известны как процедуры Существуют команды, такие как ALTER ROUTINE и DROP ROUTINE, которые могут работать с функциями и процедурами, не зная, какого они типа. Однако следует отметить, что команды CREATE ROUTINE не существует.