Определение функций Multi-statementтакже практически полностью аналогично определению функций scalar и inline, рассмотренных ранее.
Но есть и отличия:
1. Первое отличие связано с тем, что здесь необходимо
a.в отличие от функций inline и scalar - указать имя локальной переменной типа TABLE, в которой будет возвращен результат выполнения функции;
b.определять тип возвращаемого значения;
c.явно определить набор столбцов, которые будут применяться для хранения полученных данных.
В этих функциях можно дополнительно определять индексы, ограничения целостности и т. д.
2. Второе отличие связано с завершением работы функции. Завершение работы функции происходит при выполнении команды return, однако не требуется указание значения, которое будет возвращено как результат выполнения функции. Всегда возвращается содержимое переменной типа TABLE, указанной после ключевого слова returns.
Может возникнуть необходимость внести в уже созданную функцию некоторые изменения. Для этого вы можете использовать команду alter function.
Параметры и синтаксис команды alter function аналогичны команде create function, требуется лишь заменить слово create на alter.
Пример 8. Команда обновления функции:
ALTER FUNCTION MyFunc ( @Char char, @n int)
SELECT Фамилия, Имя, Отчество, Город, Телефон
FROM Клиенты INNER JOINТелефоны_клиентов
ONКлиенты.ID_клиента = Телефоны_клиентов.Клиент
WHERE LEFT (Фамилия, 1) = @Char AND LEN(Фамилия)<=@n
Для удаления функции используется команда drop function, имеющая синтаксис:
DROP FUNCTION {[имя_схемы. ] имя_функции } [, ...n]
С помощью одной команды можно удалить множество функций, просто перечислив их имена через запятую.
Пример использования команды:
DROP FUNCTION MyFunc, MyFirstFunction
Разработать и применить следующие функции пользователя:
1. скалярную функцию, определяющую общий объем поставок (количество_ед_товара) заданной фирмы-поставщика.
2. скалярную функцию, определяющую доход от продаж для заданной категории товаров.
3. скалярную функцию, возвращающую список из 10 товаров, принесших самый большой доход за последний год.
5. Inline-функцию, выводящую список клиентов, у которых номера телефонов содержат код 8(495) или 8(499).
6. Multi-statement или Inline – функцию, вычисляющую для каждого товара среднюю цену продаж и из таблицыПерсонал выводит фамилии продавцов, у которых имеются сделки с ценой продажи ниже средней.
7. Разработать собственную Multi-statement функцию. Привести пример ее применения.
Следует ли назначать каждому процессу одну непрерывную область физической памяти или можно выделять память «кусками»? Должны ли сегменты программы, загруженные в память, находиться на одном месте в течение всего периода выполнения процесса или можно ее время от времени сдвигать? Что делать, если сегменты программы не помещаются в имеющуюся память? Разные ОС по-разному отвечают на эти и другие базовые вопросы управления памятью. Далее будут рассмотрены наиболее общие подходы к распределению памяти, которые были характерны для разных периодов развития операционных систем. Некоторые из них сохранили актуальность и широко используются в современных ОС, другие же представляют в основном только познавательный интерес, хотя их и сегодня можно встретить в специализированных системах.
На рис. 5.7 все алгоритмы распределения памяти разделены на два класса: алгоритмы, в которых используется перемещение сегментов процессов между оперативной памятью и диском, и алгоритмы, в которых внешняя память не привлекается.