Проектирование информационных систем
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
оманда UNION, объединяющая в один набор данных результаты двух отдельных запросов к указанным выше таблицам.
Списки выборки в каждой команде SELECT, входящей в состав команды UNION, должны содержать одинаковое число столбцов и соответствующие столбцы должны иметь одинаковые (или преобразующиеся один к другому) типы данных. Заголовки столбцов результата команды UNION совпадают с заголовками столбцов первой команды SELECT.
Рис. 32.
Пользовательские функции и процедуры
Кроме отдельных SQL-запросов СУБД MS SQL Server позволяет использовать для обработки данных и такие средства как системные и пользовательские хранимые процедуры, триггеры, пользовательские функции.
Пользовательские функции
Пользуясь средствами языка T-SQL, пользователь может создавать собственные функции, которые будут сохраняться в его базе данных. Эти функции затем могут вызываться в командах SELECT и других выражениях языка T-SQL. Функции могут иметь входные параметры любого типа кроме text, image, table.
Существует три типа пользовательских функций. Функция типа inline возвращает в качестве результата значение типа table и тело этой функции должно состоять из одной команды SELECT. Рассмотрим создание и вызов функции такого типа на примере вычисления стоимости выполненных заказов для заказчика с данной фамилией и инициалами. (Имена заказчиков находятся в столбце Cus_name таблицы Customer, а стоимости в столбце Exec_cost таблицы Executed_Contract.)
Создание функции происходит при выполнении команды Create Function. Для получения текста этой команды в обозревателе объектов последовательно выбирается база данных, для нее пункты Программирование, Функции, Функции, возвращающие табличное значение. Для последнего пункта вызывается контекстное меню, содержащее команду Создать встроенную функцию, возвращающую табличное значение…. Эта команда выводит на экран окно с шаблоном команды Create Function, в которой должен быть размещен код создаваемой функции. После удаления из шаблона комментариев и вставки необходимых команд и конкретных имен получаем код команды создания пользовательской функции типа inline на языке T-SQL, представленный на рис. 33. (При этом для создания запроса SELECT, который находится в теле функции, был использован редактор запросов.)
Пользовательская функция добавляется в базу данных после запуска команды создания функции на выполнение. Имя функции появляется в обозревателе объектов после его обновления.
Рис. 33.
После создания пользовательская функция может быть использована, например, следующим образом. В обозревателе объектов для имени этой функции вызывается контекстное меню, в котором находится команда создать сценарий для функции. Затем через подменю происходит конкретизация команды > используя SELECT > В новом окне редактора запросов. В результате на экране появляется окно с кодом команды SELECT, которая в нашем примере после замены входного параметра функции summa на конкретное значение Быков О.О. получает вид, показанный на рис. 34.
Результат выполнения этого запроса показан в нижней части рис. 34.
Рис. 34.
По существу, созданная в рассмотренном примере пользовательская функция в приведенном выше варианте ее использования, может быть интерпретирована как Запрос с параметром в терминологии СУБД Access.
Скалярные функции
Рис. 35.
Рис. 36.
Хранимые процедуры
Хранимая процедура - это последовательность компилированных операторов T-SQL, хранящихся в системной базе данных SQL Server. Хранимые процедуры предварительно откомпилированы, поэтому эффективность их выполнения выше, чем у обычных запросов. После первого выполнения компилированный план процедуры хранится в быстродействующем кэше в оперативной памяти, что существенно повышает скорость выполнения запросов. Другое их преимущество состоит в том, что пользователь может получить право выполнения хранимой процедуры, даже если он не имеет права доступа к тем объектам, к которым обращается процедура.
Хранимая процедура создается с помощью оператора CREATE PROCEDURE. Для создания хранимой процедуры соответствующей командой контекстного меню открывается шаблон кода, в котором задаются имя, параметры и SQL-код тела процедуры. Затем созданный код запускается на выполнения для проверки синтаксиса и компиляции.
На рис. 37 приведен код процедуры, вычисляющей количество имеющихся в каталоге вариантов мебели заданного типа.
После обновления в обозревателе объектов добавляется ярлык созданной процедуры.
Рис. 37.
Для выполнения процедуры контекстное меню предлагает два варианта: выполнить хранимую процедуру или создать сценарий для хранимой процедуры, используя команду execute.
В первом случае появляется окно с таблицей параметров процедуры, в котором задаются значения входных параметров (в рассматриваемом примере значение параметра @type=стол, рис. 38).
Рис. 38.
После этого появляется код сценария выполнения процедуры, запуск которого дает результат (рис.39).
Рис. 39.
Триггеры
Триггер - это специальный тип хранимой процедуры, которая автоматически выполняется при каждой попытке изменить защищаемые его данные. Триггеры обеспечивают целостность данных, предотвращая несанкционированное или неправильное их изменение. Триггеры не имеют параметров и не выполняются явно. Это з?/p>