2010-04-21 2 views
61

В контексте базы данных MySQL, в чем разница между этими 3 триместра:различия между процедурой и функцией и рутиной?

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

P.S. Встраиваемые функции, такие как функции даты, weekday(), считаются какими?

+2

Связанный ответ: [MySQL хранимая процедура против функции] (http://stackoverflow.com/questions/3744209/mysql-stored-procedure-vs-function-which-would-i-use-when/13510102#13510102) , Я нашел ссылку, пока улучшал свой ответ, поэтому был связан :) –

ответ

68

Google - ваш друг. Первый матч за «MySQL рутинной процедурой функция» заключается в следующем: http://dev.mysql.com/doc/refman/5.0/en/stored-routines-syntax.html

Быстрое резюме:

Хранимая процедура либо процедура или функция.

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

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

+13

Хотя я согласен с настроем RTFM. Этот ответ теперь используется Google для отображения встроенного результата. – Realistic

27

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

MYSQL Функцией

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

MYSQL Процедура

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

29

Здесь я попытался суммировать разницу между функциями и процедурами.

  1. Функция FUNCTION всегда возвращает значение с помощью оператора return. ПРОЦЕДУРА может возвращать одно или несколько значений через параметры или вообще не может возвращать их.
  2. Функции обычно используются для вычислений, где, как правило, обычно используются для выполнения бизнес-логики.
  3. Функция возвращает только 1 значение. Процедура может возвращать несколько значений (макс. 1024).
  4. Сохраненная процедура всегда возвращает целое значение нуля по умолчанию. В то время как типы возвращаемых функций могут быть скалярными или табличными или табличными значениями.
  5. Хранимые процедуры имеют предварительно скомпилированный план выполнения, в функции которого нет.
  6. Функция может быть вызвана непосредственно оператором SQL, например, выберите func_name из double, а процедуры не могут.
  7. Сохраненная процедура имеет безопасность и снижает сетевой трафик, а также мы можем вызвать хранимую процедуру в любом нет. приложений одновременно.
  8. Функция может использоваться в SQL-запросах, в то время как процедура не может использоваться в SQL-запросах. Это вызывает основную разницу между функциями и процедурами.
+0

Ваш 4-й пункт неправильный, пожалуйста, исправьте ans –

0

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