Изменения

Перейти к: навигация, поиск

Хранимые функции

2698 байт добавлено, 20:12, 12 декабря 2021
Добавление статьи по теме "Хранимые функции" для курса "Базы данных".
{{Определение
|definition =
'''Хранимая функция''' — фрагмент кода, хранящийся в БД, при исполнении которого может возвращаться как скалярное значение, так и таблицы.}}

'''Отличие от [[Хранимые процедуры|хранимых процедур]]''':
# Возврат скалярного значения
# Использование в выражениях

== Создание ==
===Синтаксис===

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

<font color = blue>create <font color = red>[<font color = black>aggregate</font>]</font> function</font>
<font color = red>имя<font color = gray>(<font color = red>параметры</font>)</font>
<font color = black>returns</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>

== Особенности ==

* '''Обращение к таблицам.''' Многие СУБД запрещают в функции обращаться к таблицам.
* '''Возвращаемые значения.'''
** Поддержка встроенных типов есть всегда
** Реже есть поддержка пользовательского типа или таблицы в качестве возвращаемого значения.

==Литература==
* ''Дейт К. Введение в системы баз данных (главы 4 и 17)''
* ''Уидом Д., Ульман Д. Основы реляционных баз данных (раздел 7.4)''
* ''Gulutzan P., Pelzer T. SQL-99 complete, really''
** [https://crate.io/docs/sql-99/en/latest/chapters/25.html Chapter 25 – SQL-Invoked Routine]
** [https://crate.io/docs/sql-99/en/latest/chapters/26.html Chapter 26 – PSM: Not Just Persistent Stored Modules]

[[Категория: Базы данных]]
9
правок

Навигация