Б. Представления, хранимые процедуры, триггеры




1. Создать просмотр для вывода кратких сведений о студентах (идентификатор, номер зачетки, фамилия и инициалы, идентификатор группы):

– создать представление Students_info:

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов | Базы данных

| Education | пр. кн. мыши на Представления | Создать представление… ►

ф. Добавление таблицы | выбр. Students; кн. Добавить; кн. Закрыть;

ф. Представление – dbo.View_1*

(1-я стр. | Столбец ← stud_ID); (2-я стр. | Столбец ← no_zk);

(3-я стр. | Столбец ← RTRIM(fam) + ' ' + SUBSTRING(im; 1; 1) + '.' + SUBSTRING(ot; 1; 1) + '.'; Псевдоним ← fio);

(4-я стр. | Столбец ← RTRIM(spec) + '-' + kurs + gr; Псевдоним ← gruppa);

кл. [Ctrl + S] ►ф. Выбор имени | Введите имя представления ← Students_info.

– проверить работоспособность представления:

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов | Базы данных

| Education | Представления | пр. кн. Students_info |

Открыть представление ► результаты на экране.

2. Аналогичным образом создать представление для вывода сведений об успеваемости студентов из таблицы успеваемости с указанием сведений о студенте из запроса Students _ info и сведений о предмете из таблицы предметов. Результат должен содержать следующие поля: ФИО студента, Группа, Предмет, Дата, Оценка. Назвать представление как Students_uspev.

3. Создать хранимую процедуру для вывода кратких сведений о студенте (идентификатор, фамилия и инициалы, идентификатор группы) по номеру его зачетной книжки:

– создать хранимую процедуру GetStudentInfo

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов |

Базы данных | Education | Программирование | пр. кн. мыши на Хранимые процедуры |

Создать хранимую процедуру…► ф. Имя сервера.Education – SQLQuery1.sql |

Панель инструментов | кн. Указать значения для параметров шаблона ►

ф. Задание значений для параметров шаблона | Параметр Author;

Значение ← Номер группы; Параметр Create Date; Значение ← Текущая дата;

Параметр Author; Значение ← Номер группы; Параметр Description; Значение ← Краткие

сведения о студенте; Параметр Procedure_Name; Значение ← GetStudentInfo;

Параметр @Param1; Значение ← @zk; Параметр Datatype_For_Param1;

Значение ← char(6); кн. OK;

– ввести программный код

ф. Имя сервера.Education – SQLQuery1.sql | удалить строки, @p2 int = 0;

вместо строки SELECT @zk, @p2 ввести код:

 

SELECT stud_ID, RTRIM(fam) + ' ' + SUBSTRING(im, 1, 1) + '.' + SUBSTRING(ot, 1, 1)

+ '.' AS fio, RTRIM(spec) + '-' + kurs + gr AS gruppa

FROM dbo.Students

WHERE no_zk = @zk

– сохранить хранимую процедуру под именем GetStudentInfo.sql.

– привязать хранимую процедуру к базе данных

Панель инструментов | кн. Выполнить

– проверить работоспособность хранимой процедуры:

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов |

Базы данных | Education | Программирование | Хранимые процедуры | пр. кн. мыши

на GetStudentInfo | Выбрать хранимую процедуру… | ф. Выполнение процедуры… |

Параметр @zk; Значение ← ввести любое значение номера зачетной книжки;

кн. OK ►результаты на экране.

4. Создать триггер, проверяющий, что каждый студент может сдавать не более двух предметов в один день.

– создать новый триггер CheckExams для таблицы успеваемости

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов |

Базы данных | Education | Таблицы | раскр. Uspev | пр. кн. Триггеры | Создать триггер… ►

ф. Имя сервера.Education – SQLQuery1.sql

Панель инструментов | кн. Указать значения для параметров шаблона ►

ф. Задание значений для параметров шаблона | Параметр Trigger_Name;

Значение ← CheckExams; кн. OK;

– удалить фрагмент

CREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name>

ON <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name>

AFTER <Data_Modification_Statements,, INSERT,DELETE,UPDATE>

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

-- Insert statements for trigger here

END

– ввести программный код триггера

CREATE TRIGGER CheckExams

ON Uspev FOR INSERT, UPDATE

AS

DECLARE

@stud INT,

@date DATETIME,

@count INT

BEGIN TRANSACTION

SELECT @stud=Student,@date=Data FROM INSERTED

SELECT @count = count(*)

FROM Uspev WHERE Student=@stud and Data=@date

IF(@count < 3)

BEGIN COMMIT TRANSACTION END

ELSE

BEGIN

RAISERROR(Студент может сдавать не более двух предметов в день',16,1)

ROLLBACK TRANSACTION

END

– сохранить триггер под именем CheckExams.sql.

– привязать триггер к базе данных

Панель инструментов | кн. Выполнить

– проверить работоспособность хранимой процедуры:

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов |

Базы данных | Education | Таблицы | пр. кн. мыши на Uspev | ввести вторую запись

по студенту, сдающему второй предмет в один и тот же день; сделать попытку

перейти на следующую строку ►сообщение об ошибке с текстом из триггера.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-24 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: