9
правок
Изменения
Добавлено больше текста
== Отличие от хранимых процедур ==
*Возврат скалярного значения, в то время как хранимая процедура возвращает только таблицы
*Использование в выражениях
===Синтаксис===
При создании хранимой функции есть те же параметры, что и у хранимой процедуры(имя, аргументы, настройки языка, действия с данными и так далее), но в отличие от последней, нужно указать возвращаемый тип.
<font color = blue>create <font color = red>[<font color = black>aggregate</font>]</font> function</font>
тело</font>
В теле функции можем указывать оператор '''return''', который приводит к возврату значения. Если в теле функции не будет оператора ''return'', то считается, что данная функция возвращает ''null''.
=== Пример ===
<font color = blue>create function add</font><font color = gray>(<font color = black>a int<font color = gray>,</font> b int</font>)</font> returns int
<font color = blue>return</font> a <font color = gray>+</font> b<font color = gray>;</font>
Простая хранимая функция в примере возвращает целое число и складывает два целых числа.
== Особенности ==
* '''Обращение к таблицам.''' Многие СУБД запрещают в функции обращаться к таблицам, что негативно сказывается на возможности применения.
* '''Возвращаемые значения.'''
** Поддержка встроенных типов есть всегда(в том числе <code>varchar</code> и прочее)** Реже есть поддержка пользовательского типа или . Еще реже - таблицы в качестве возвращаемого значения, но есть СУБД, позволяющие получать из функции таблицу целиком, и снаружи обработать ее (например, во <code>from</code>). В последнем случае хранимая функция практически не отличима от хранимой процедуры.
==Литература==