СУБД MS SQL Server: разработка пользовательских функций, хранимых процедур, триггеров, представлений, курсоров

Страницы работы

Содержание работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П. О. СУХОГО

Факультет автоматизированных и информационных систем

Кафедра «Информационные технологии»

ОТЧЕТ   ПО   ЛАБОРАТОРНОЙ   РАБОТЕ   №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 параметр символьного типа(факультет). В функции производится выборка данных из таблиц Студенты и Платежи, если значение поля Факультет совподает с заданным значением.

Похожие материалы

Информация о работе