Skip to content

25. Функции Transact SQL

Pandas edited this page Jan 2, 2018 · 1 revision

SQL Server содержит набор встроенных функций и предоставляет возможность создавать пользовательские функции (User Defined Function – UDF). Различают детерминированные и недетерминированные функции.

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

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

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

Табличные пользовательские функции бывают двух типов: подставляемые и многооператорные. Скалярные пользовательские функции обычно используются в списке столбцов инструкции SELECT и в предложении WHERE. Табличные пользовательские функции обычно используются в предложении FROM, и их можно соединять с другими таблицами и представлениями.

Создание и вызов скалярной функции

Для создания скалярной функции используется инструкция CREATE FUNCTION, имеющая следующий синтаксис:

CREATE FUNCTION [ имя-схемы. ] имя-функции ( [ список-объявлений- параметров ] )
RETURNS скалярный-тип-данных [ WITH список-опций-функций ]
[ AS ]
BEGIN
тело-функции
RETURN скалярное-выражение END [ ; ]

Синтаксис вызова скалярных функций:

имя-схемы.имя-функции ( [ список-параметров ] )
Для скалярной функции можно использовать инструкцию EXECUTE или EXEC:
EXECUTE @возвращаемое-значение = имя-функции ( [ список-параметров ] )

Синтаксис создания подставляемой табличной функции выглядит так:

CREATE FUNCTION [ имя-схемы. ] имя-функции ( [ список-объявлений- параметров ] )
RETURNS TABLE
[ WITH список-опций-функций ]
[ AS ]
RETURN [ ( ] выражение-выборки [ ) ]
END [ ; ]

Синтаксис создания многооператорной табличной функции:

CREATE FUNCTION [ имя-схемы. ] имя-функции ( [ список-объявлений- параметров ] )
RETURNS @имя-возвращаемой-переменной TABLE определение-таблицы [ WITH список-опций-функций ]
[ AS ]
BEGIN
тело-функции
RETURN END [ ; ]
Clone this wiki locally