RETURNS TABLE
RETURN
SELECT Фамилия, Имя, Отчество, Город
FROM Клиенты
WHERE LEFT(Фамилия, 1) = @Char;
Эта функция возвращает список авторов, чья фамилия начинается с определенной буквы.
Функции Multi-Statement
Синтаксис команды для создания Multi-statement - функции:
CREATE FUNCTION Имя_функции
(Имя параметра [ AS] тип_параметра [= значение_по_умолчанию] [, … n])
RETURNS @возращаемая_переменная TABLE <определение_типа,_таблицы>
[ WITH [ ENCRYPTION ] | [SCHEMABIUDING] |
[ RETURNS NULL ON NULL INPUT |
CALLED ON NULL INPUT ] ]
[ AS ]
BEGIN
SQL-КОДЫ
RETURN
END
Определение функций Multi-statementтакже практически полностью аналогично определению функций scalar и inline, рассмотренных ранее.
Но есть и отличия:
1. Первое отличие связано с тем, что здесь необходимо
a.в отличие от функций inline и scalar - указать имя локальной переменной типа TABLE, в которой будет возвращен результат выполнения функции;
b.определять тип возвращаемого значения;
c.явно определить набор столбцов, которые будут применяться для хранения полученных данных.
В этих функциях можно дополнительно определять индексы, ограничения целостности и т. д.
2. Второе отличие связано с завершением работы функции. Завершение работы функции происходит при выполнении команды return, однако не требуется указание значения, которое будет возвращено как результат выполнения функции. Всегда возвращается содержимое переменной типа TABLE, указанной после ключевого слова returns.
Пример 4.Функция возвращает множество продавцов по заданному товару и дате
Create function example ( @abc varchar(20), @bcd date)
returns @cde table (Сотрудники varchar(20) null)
As
Begin
insert into @cde
select Фамилия from Персонал inner join Продажи on Персонал.id_сотрудника = Продажи.Продавец inner join Товары on Товары.id_товара = Продажи.Товар where Товары.Название_товара =@abc and Продажи.Дата = @bcd
Return
End
Дата добавления: 2015-08-26; просмотров: 776;