Подтвердить что ты не робот

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

Может ли кто-нибудь объяснить, что представляет собой точная разница между хранимыми процедурами и определенными пользователем функциями и в каком контексте полезно?

4b9b3361

Ответ 1

Это то, что я всегда помню:)

  • Процедура может возвращать значения нуля или n, тогда как функция может возвращать одно обязательное значение.
  • Процедуры могут иметь параметры ввода/вывода для него, тогда как функции могут иметь только входные параметры.
  • Процедура позволяет выбирать, а также оператор DML, в то время как функция допускает в нем только оператор select.
  • Функции могут вызываться из процедуры, тогда как процедуры не могут быть вызваны из функции.
  • Исключение может выполняться блоком try-catch в процедуре, тогда как блок try-catch не может использоваться в функции.
  • Мы можем пойти для управления транзакциями в процедуре, тогда как мы не можем войти в функцию.
  • Процедуры не могут использоваться в инструкции select, тогда как функция может быть встроена в оператор select.
  • UDF может использоваться в операторах SQL в любом месте раздела WHERE/HAVING/SELECT, где хранимые процедуры не могут быть.
  • UDF, которые возвращают таблицы, могут рассматриваться как другой набор строк. Это можно использовать в JOINs с другими таблицами.
  • Inline UDF может быть хотя в виде представлений, которые принимают параметры и могут использоваться в JOIN и других операциях Rowset.

Источник http://www.codeproject.com/Tips/286539/Difference-between-stored-procedure-and-function

Ответ 2

Функция всегда возвращает значение и может не выполнять инструкции DML (INSERT/UPDATE/DELETE).

Хранимая процедура не может вернуть значение - вам нужно использовать параметр OUT - и может запускать инструкции DML.

Преимущество использования функции и хранимой процедуры?


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

Ответ 4

Пользовательская функция имеет несколько ограничений, таких как записи DML, которые можно использовать и т.д. PLS check