В чем различия между хранимыми процедурами, функциями и процедурами?

В чем разница между этими 3 терминами в контексте базы данных MySQL:

  • хранимая процедура
  • сохраненная функция
  • сохраненная процедура

Также встроенные функции, такие как функции даты и времени (например, WEEKDAY() и т.д.), Рассматриваются как что?

Ответ 1

Google - ваш друг. Первое совпадение для "процедуры функции mysql-процедуры" таково: http://dev.mysql.com/doc/refman/5.0/en/stored-routines-syntax.html

Краткое резюме:

Сохраненная процедура - это либо процедура, либо функция.

Процедура вызывается с помощью инструкции CALL и может только возвращать значения с использованием выходных переменных.

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

Ответ 2

Здесь я попытался обобщить различия между функциями и процедурами:

  1. FUNCTION всегда возвращает значение, используя оператор return. PROCEDURE может возвращать одно или несколько значений через параметры или не возвращать их вообще.
  2. Функции обычно используются для вычислений, где процедуры обычно используются для выполнения бизнес-логики.
  3. Функция возвращает только 1 значение. Процедура может вернуть несколько значений (максимум 1024).
  4. Хранимая процедура всегда возвращает целочисленное значение ноль по умолчанию. Принимая во внимание, что возвращаемые функции функции могут быть скалярными или табличными или табличными значениями.
  5. Хранимые процедуры имеют предварительно скомпилированный план выполнения, а функции - нет.
  6. Функция может быть вызвана непосредственно оператором SQL, например, SELECT func_name FROM DUAL, а процедуры - нет.
  7. Хранимая процедура обеспечивает безопасность и уменьшает сетевой трафик, а также мы можем вызывать хранимую процедуру в любом количестве приложений одновременно.
  8. Функция может использоваться в запросах SQL, а процедура не может использоваться в запросах SQL. Это вызывает существенное различие между функцией и процедурами.

Ответ 3

Разница между функцией MySQL и процедурой mysql

Функция MYSQL

Он должен возвращать значение. IN, OUT и INOUT не могут использоваться в функции. Но возвращаемый тип данных должен быть объявлен при создании функции. функция может вызываться из оператора SQL. Функция возвращает одно значение.

Процедура MYSQL

Возвращаемые значения не являются обязательными, но могут использовать параметр OUT для процедура возвращается. Можно использовать IN | OUT | INOUT. Процедура не может быть вызван из SQL Statement. процедура возвращает несколько значения с помощью параметров OUT или INOUT.

Ответ 4

ПРОЦЕДУРЫ ПРОТИВ ФУНКЦИЙ

1.  PROCEDURES may or may not return a value but FUNCTION must return a value
2.  PROCEDURES can have input/output parameter but FUNCTION only has input parameter.
3.  We can call FUNCTION from PROCEDURES but cannot call PROCEDURES from a function. 
4.  We cannot use PROCEDURES in SQL statement like SELECT, INSERT, UPDATE, DELETE, MERGE etc. but we can use them with FUNCTION.
5.  We can use try-catch exception handling in PROCEDURES but we cannot do that in FUNCTION. 
6.  We can use transaction in PROCEDURES but it is not possible in FUNCTION.

Ответ 5

Функция должна возвращать значение, но в Хранимой процедуре она является необязательной (процедура может возвращать значения нуля или n). Функции могут иметь только входные параметры, тогда как процедуры могут иметь параметры ввода/вывода. Функции можно вызывать из процедуры, тогда как процедуры не могут быть вызваны из функции.