Процедуры, определяемые пользователем
примечание
Эта страница переведена при помощи нейросети GigaChat.
Процедура является объектом базы данных, похожим на функцию. Ключевые различия заключаются в следующем:
- Процедуры определяются с помощью команды CREATE PROCEDURE, а не
CREATE FUNCTION
. - Процедуры не возвращают значение функции; поэтому
CREATE PROCEDURE
не имеетRETURNS
предложения. Однако процедуры могут вместо этого возвращать данные своим вызывающим абонентам через выходные параметры. - Хотя функция вызывается как часть запроса или команды DML, процедура вызывается изолированно с использованием команды CALL.
- Процедура может фиксировать или откатывать транзакции во время ее выполнения (затем автоматически начиная новую транзакцию), если только вызывающая команда не является частью явного блока транзакций. Функция не может этого сделать.
- Некоторые атрибуты функций, такие как строгость, неприменимы к процедурам. Эти атрибуты управляют тем, как функция используется в запросе, что не относится к процедурам.
Объяснения в следующих разделах о том, как определять пользовательские функции, также применимы и к процедурам, за исключением упомянутых выше моментов.
В совокупности функции и процедуры также известны как подпрограммы. Существуют команды, такие как ALTER ROUTINE и DROP ROUTINE, которые могут работать с функциями и процедурами без необходимости знать, к какому типу они относятся. Обратите внимание, однако, что нет команды CREATE ROUTINE
.