Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovoi_Project / КР_практическая часть.docx
Скачиваний:
16
Добавлен:
31.03.2015
Размер:
347.59 Кб
Скачать
  1. Триггеры (Triggers)

Триггер для таблицы ekzam , не позволит внести данные без наличия у студента зачета, по этому же предмету.

ПРОГРАММНЫЙ КОД

use lab_prac1

go

CREATE TRIGGER insert_into_ekzam ON dbo.ekzam

FOR INSERT

AS

declare @X int, @Y int

select @X=D.id_un_card, @Y=D.id_predm

from dbo.ekzam, INSERTED D

WHERE

dbo.ekzam.id_un_card=D.id_un_card and

dbo.ekzam.id_predm=D.id_predm

IF not exists (select * from dbo.zachet where

dbo.zachet.id_un_card=@X and dbo.zachet.id_predm=@Y )

begin

ROLLBACK TRAN

RAISERROR ('Ошибонька',16,10)

END

Результат выполнения триггера:

  1. Курсоры (Cursor)

Курсор, формирующий экзаменационные ведомости по всем дисциплинам и всех групп.

ПРОГРАММНЫЙ КОД

declare start scroll cursor

for select dbo.disc.id_predm, dbo.disc.name

from dbo.disc

open start

Declare @predmet int,@nazvanie char(100)

fetch next from start into @predmet, @nazvanie

while @@fetch_status = 0

begin

Print ''

Print ''

print '

ЭКЗАМЕНАЦИОННАЯ ВЕДОМОСТЬ '

Print ' Номер предмета:'+STR(@predmet)

Print ' Название: '+@nazvanie

declare nextstart scroll cursor

for

select distinct dbo.groups.id_groupe

from dbo.groups

inner join dbo.ekzam on dbo.groups.id_groupe=dbo.ekzam.id_groupe

where dbo.ekzam.id_predm=@predmet

open nextstart

declare @group_number int

fetch next from nextstart into @group_number

while @@fetch_status = 0

begin

print ''

print ' Группа '+ STR(@group_number)

print ' ФИО СТУДЕНТА Номер зачетной книжки Оценка'

declare nextnextstart scroll cursor

for

select dbo.students.firstname,dbo.groups_stud.id_un_card,dbo.ekzam.itog

from dbo.students

inner join dbo.groups_stud on dbo.students.id_un_card=dbo.groups_stud.id_un_card

inner join dbo.ekzam on dbo.groups_stud.id_un_card=dbo.ekzam.id_un_card

where dbo.groups_stud.id_groupe=@group_number

open nextnextstart

declare @Nomer_zachetki int,

@Resultat_sessii int,

@Familiya char(50)

fetch next from nextnextstart into @Familiya,@Nomer_zachetki,@Resultat_sessii

while @@fetch_status = 0

begin

print ' - '+@Familiya+''+STR(@Nomer_zachetki) +' '+STR(@Resultat_sessii)

fetch next from nextnextstart into @Familiya,@Nomer_zachetki,@Resultat_sessii

end

close nextnextstart

deallocate nextnextstart

print ' '

fetch next from nextstart into @group_number

end

print''

print ''

print ''

print ''

print ' дата роспись'

close nextstart

deallocate nextstart

fetch next from start into @predmet,@nazvanie

end

close start

deallocate start

Результат выполнения курсора:

  1. Список литературы

1. Коннолли Т. , Бегг К. , Страчан А. Базы данных: Проектирование, реализация и сопровождение: Теория и практика. - К,М,СПб: Вильямс, 2000.

2. www.sql.ru

3. http://msdn.microsoft.com/ru-ru/

4. http://msdn.microsoft.com/en-us/

3

Соседние файлы в папке Kursovoi_Project