WHERE (dbo.Послужной_список.Дата_занятия_должности>=CONVERT(date, @before) and dbo.Послужной_список.Дата_занятия_должности<=CONVERT(date,@after))
)
)
Inline_func – название функции. В функцию передаётся 2 параметра типа nchar(задаем промежуток времени). Функция возвращает таблицу значений . В таблицу будут выводиться значения полей из таблицы «Сотрудники» и «Послужной_список», если данные будут входить в заданный промежуток.
Синтаксис вызова: Select * From dbo.Inline_func1('2013-04-01', '2013-05-01')
Рисунок 18 – Результат выполнения пользовательской табличной функции Inline – выбор сотрудников, устроившихся на работу в заданный период времени
4.3 Создать пользовательскую табличную функцию Multistatement, которая будет выполнять увеличение зарплаты у кураторов.
Create FUNCTION [dbo].[Multi_func]
()
RETURNS @Зарплата TABLE (ФИО nchar(30),
Должность nchar(30), Оклад money)
AS
BEGIN
DECLARE @оклад int
INSERT INTO @Зарплата
SELECT dbo.Сотрудники.ФИО, dbo.Должность.Название, (CONVERT(int, dbo.Должность.Оклад)+1000) FROM dbo.Сотрудники
INNER JOIN dbo.Должность ON dbo.Сотрудники.Код_должности= dbo.Должность.Код_должности
WHERE dbo.Должность.Название=N'Куратор'
RETURN
END
GO
Multi_funс- название функции. В функцию не передаются параметры. Функция возвращает таблицу значений . В функции создаётся новая таблица @Зарплата с полями ФИО, Должность и оклад. Результат работы функции: увеличение оклада сотрудников на должности куратора.
Синтаксис вызова: SELECT * FROM dbo.Multi_func()
Рисунок 19 – Результат выполнения пользовательской табличной функции Multistatement – увеличение зарплаты куратора на 100 тысяч
5. Для разработанной БД предложить операции обработки данных, требующие использования локальных хранимых процедур. Разработать две хранимых процедуры и протестировать их работу.
5.1 Разработать хранимую процедуру с входными параметрами, которая выводит все сведения о сотруднике по ФИО.
Create PROCEDURE [dbo].[Viborka1]
@ФИО nchar(20)
AS
BEGIN
SELECT *
FROM dbo.Сотрудники INNER JOIN dbo.Должность ON dbo.Сотрудники.Код_должности= dbo.Должность.Код_должности
WHERE dbo.Сотрудники.ФИО=@ФИО
END
Viborka1 - название функции. В функцию передаётся 1 параметр символьного типа(ФИО). В функции производится выборка данных из таблиц Сотрудники и Должность, если значение поля ФИО совподает с заданным значением.
Синтаксис вызова: Viborka1 'Сынкова Т.В'
Рисунок 20 – Результат выполнения процедуры - сведения о сотрудниках по заданному ФИО
5.2 Разработать хранимую процедуру с входными параметрами, которая выводит все сведения о сотрудниках заданного возраста.
Create PROCEDURE [dbo].[Viborka3]
@возраст nchar(20)
AS
BEGIN
SELECT *
FROM dbo.Сотрудники INNER JOIN dbo.Должность ON dbo.Сотрудники.Код_должности= dbo.Должность.Код_должности
WHERE YEAR(GETDATE())-YEAR(dbo.Сотрудники.Дата_рождения)= CONVERT(int,@возраст)
END
Viborka3 - название функции. В функцию передаётся 1 параметр символьного типа(возраст). В функции производится выборка данных из таблиц Сотрудники и Должность, если вычесляемое поле Дата рождения совподает с заданным значением.
Синтаксис вызова: Viborka3 '21'
Рисунок 21 – Результат выполнения процедуры - сведения о сотрудниках по заданному возрасту
6. Создать для разработанной БД следующие DML-триггеры:
· обеспечивающие целостность данных и выполняющие каскадное обновление и удаление данных в таблицах на стороне отношения «многие» при изменениях соответствующих данных в таблицах на стороне отношения «один»;
Обновление данных в таблице «Сотрудники»
CREATE TRIGGER [dbo].[TriggerDML2]
ON [dbo].[Сотрудники]
AFTER INSERT /* при попытке добавить данные*/
AS
BEGIN
SET NOCOUNT ON;
RAISERROR ('Добавить данные нельзя', 15,1)
END
Рисунок 22 – Результат выполнения тригерра – запрет обновления данных в таблице Сотрудники
DDL триггер, запрещающий удалять таблицы из БД с выводом соответствующего сообщения
CREATE TRIGGER [DDLTrigger3]
ON DATABASE
FOR DROP_TABLE
AS
BEGIN
PRINT 'Запрещено удаление таблиц'
ROLLBACK;
END
Go
DROP TABLE dbo.Сотрудники
Данный триггер запускается автоматически, при удалении таблиц из БД. Выводится сообщение «Запрещено удаление таблиц»
Попытка удаление таблицы: DROP TABLE dbo.Сотрудники
Рисунок 23 – Результат выполнения: удаления таблицы из базы
· триггеры INSTEAD OF (предложить соответствующие операции обработки данных).
Рисунок 24 – Исходный код триггера INSTEAD OF, оповещающего о добавлении данных в таблицу «Должность»
Вывод: В ходе лабораторной работы была разработана серверная часть клиент-серверной информационной системы в области «Языковые курсы» средствами СУБД MS SQL Server: разработаны и настроены свойства таблиц и представлений, создана диаграмма БД и триггеры, обеспечивающие целостность БД. Также были разработаны хранимые процедуры и пользовательские функции различных типов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.