МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П. О. СУХОГО
Факультет автоматизированных и информационных систем
Кафедра «Информационные технологии»
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №7
по дисциплине «Базы данных»
на тему:СУБД MS SQL Server: разработка пользовательских функций, хранимых процедур, триггеров, представлений, курсоров.
Выполнила: студентка гр. ИТ-32
Принял:
Дата сдачи отчета: _____________________
Дата допуска к защите: _____________________
Дата защиты: _____________________
Гомель 2011
Лабораторная работа 7
Цель работы: изучение технологий создания основных объектов БД, разработки программных модулей в СУБД MS SQL Server.
Задание: В разработанной средствами СУБД MS SQL Server по заданию лабораторной работы 6 БД "Платежи студентов" создать следующие:
1) Пользовательские функции – по одной функции каждого из типов:
- скалярные функции;
- табличные функции (Inline, Multistatement).
2) Хранимые процедуры
3) Триггеры (DML, DDL).
4) Курсоры (статический, динамический; использование для: выборки данных, модификация данных).
(Самостоятельно задать исходные данные, назначение и выполняемые операции создаваемых объектов БД; протестировать их работу)
1. Разработка пользовательских функций
1.1 Создать пользовательскую скалярную функцию, которая будет возвращать:
сумму всех хранящихся платежей (без параметров);
ALTER FUNCTION [dbo].[skal_func]
()
RETURNS money
AS
BEGIN
DECLARE @a money
Set @a=(SELECT SUM(СуммаОплаты) FROM Платежи)
RETURN (@a)
END
Scala_funс - название функции. Функция без параметров и возвращает результат денежного типа. Описываем переменную @a, в которую будет записываться результат и которая будет возвращать функцией. Производим суммирование всех строк столбца СуммаОплаты с помощью функции Sum.
Синтаксис вызова: SELECT dbo.ScalaFunc()
1.2 Создать пользовательскую табличную функцию Inline, которая будет возвращать следующую информацию:
данные о всех платежах, произведенных в заданный промежуток времени;
ALTER FUNCTION [dbo].[Inline_func]
(
@before nchar(10), @after nchar(10)
)
RETURNS TABLE
AS
RETURN
(
SELECT * FROM dbo.Платежи
WHERE (dbo.Платежи.ДатаОплаты>=CONVERT(date, @before) and dbo.Платежи.ДатаОплаты<=CONVERT(date,@after))
)
Inline_func – название функции. В функцию передаётся 2 параметра типа nchar(задаем промежуток времени). Функция возвращает таблицу значений . В таблицу будут выводиться значения полей из таблицы «Платежи», если данные будут входить в заданный промежуток.
Синтаксис вызова: SELECT * FROM dbo.Inline_func( '2011-01-11', '2011-10-11')
1.3 Создать пользовательскую табличную функцию Multistatement, которая будет выполнять следующую обработку данных:
перевести всех студентов на следующий курс и удалить всех выпускников;
ALTER FUNCTION [dbo].[Multi_func]
()
RETURNS @студенты1 TABLE (ФИО nchar(10),
ДатаПоступления date, Группа nchar(10))
AS
BEGIN
DECLARE @группа int
INSERT INTO @студенты1
SELECT dbo.Студенты.ФИО, dbo.Студенты.ДатаПоступления, (CONVERT(int, Группа)+10) FROM dbo.Студенты
WHERE ABS(2013-YEAR(dbo.Студенты.ДатаПоступления))<6
RETURN
END
GO
Multi_funс- название функции. В функцию не передаются параметры. Функция возвращает таблицу значений . В функции создаётся новая таблица @студенты1 с полями ФИО, ДатаПоступления и Группа и в неё помещается результат работы функции SELECT,в ней выбираются записи о студентах, которые учатся меншьне 6 лет.
Синтаксис вызова: SELECT * FROM dbo.Multi_func()
Перед После
2. Разработка хранимых процедур
2.1Разработать хранимую процедуру с входными параметрами, которая выводит сумму платежей, уплаченную студентами заданного факультета
ALTER PROCEDURE [dbo].[Viborka]
@fakultet nchar(20)
AS
BEGIN
SELECT dbo.Студенты.ФИО, dbo.Платежи.СуммаОплаты, dbo.Платежи.ДатаОплаты,dbo.Платежи.Цель
FROM dbo.Студенты INNER JOIN dbo.Платежи ON dbo.Студенты.КодСтудента= dbo.Платежи.КодСтудента
WHERE dbo.Студенты.СокрНазФак=@fakultet
END
Viborka - название функции. В функцию передаётся 1 параметр символьного типа(факультет). В функции производится выборка данных из таблиц Студенты и Платежи, если значение поля Факультет совподает с заданным значением.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.