Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы (2011) / Бочаров, Кобец / Лабораторная работа 8.docx
Скачиваний:
60
Добавлен:
28.06.2014
Размер:
1.49 Mб
Скачать

Задание 6

Выдать статистику по учебным заведениям и годам окончания ва­шего государства. Отчет должен начинаться с заголовка и цифры - обще­го количества записей по запросу. Далее совокупность таблиц, где каж­дая таблица начинается с заголовка: <название учебного заведения>­<цифра>, не равная нулю, а заканчивается перечнем годов окончания с цифрами, не равными нулю.

--Выдать статистику по учебным заведениям и годам окончания ва¬шего государства.

-- Отчет должен начинаться с заголовка и цифры - обще¬го количества записей по

-- запросу. Далее совокупность таблиц, где каж¬дая таблица начинается с--

--заголовка: <название учебного заведения> -<цифра>, не равная нулю,

--а заканчивается перечнем годов окончания с цифрами, не равными нулю.

create procedure lr8_6 as

declare @year_itog int

declare @vuz_itog int

declare @summary int

declare @vuz_name char(20)

declare @year_dig char(16)

declare @vuz_temp char(20)

declare statistic cursor for

select nazvanie_vuza, gok, count(*) from arm

join vuz_gorod on vuz_k=cod_vuza

group by nazvanie_vuza,gok

order by nazvanie_vuza

--инициализация

select @vuz_itog = 0

select @summary = 0

open statistic

--пробный fetch

fetch statistic into @vuz_name,@year_dig,@year_itog

--проверка статуса

--крах

if (@@fetch_status=-2)

begin

print 'Ошибка при выполнении первого FETCH'

close statistic

return

end

--отсутствие данных

if (@@fetch_status=-1)

begin

print 'Данные не найдены'

close statistic

return

end

--нормальный ход событий

select @vuz_itog = @vuz_itog+@year_itog

select @summary = @summary + @year_itog

select @vuz_temp = @vuz_name

print 'В вузе '+@vuz_name+' училось '+str(@year_itog)+' человек/а, окончивших учебу в '+@year_dig+' году'

while(@@FETCH_STATUS=0)

begin

--выборка следующей записи

fetch statistic into @vuz_name,@year_dig,@year_itog

--если поменялся город,то:

if(@vuz_name!=@vuz_temp)

begin

print 'В вузе '+@vuz_temp+' всего учится '+str(@vuz_itog)+'человек/а'

select @vuz_temp = @vuz_name

select @vuz_itog = 0

end

--если закончились данные

if (@@FETCH_STATUS = -1)

begin

break

end

print 'В вузе '+@vuz_name+' училось '+str(@year_itog)+' человек/а, окончвших учебу в '+@year_dig+' году'

select @vuz_itog = @vuz_itog+@year_itog

select @summary = @summary+@year_itog

end

close statistic

print 'В вузе '+@vuz_name+' всего учится '+str(@vuz_itog)+' человек/а'

print '-----------------------------'

print 'Всего по запросу - '+str(@summary)

deallocate statistic

return

Задание 7

Выдать статистику по выпуску 1994 года вашего государства по всем учебным заведениям и категориям обучения. Отчет должен начинать­ся с заголовка и цифры - общего количества записей по запросу (выпу­ску 1994 г.). Далее перечень таблиц, где каждая таблица начинается с заголовка: <название учебного заведения> - <цифра>, не равная нулю, а заканчивается перечнем категорий обучения с цифрами, не равными нулю.

--Выдать статистику по учебным заведениям и годам окончания ва¬шего государства.

-- Отчет должен начинаться с заголовка и цифры - обще¬го количества записей по

-- запросу. Далее совокупность таблиц, где каж¬дая таблица начинается с--

--заголовка: <название учебного заведения> -<цифра>, не равная нулю,

--а заканчивается перечнем годов окончания с цифрами, не равными нулю.

create procedure lr8_6 as

declare @year_itog int

declare @vuz_itog int

declare @summary int

declare @vuz_name char(20)

declare @year_dig char(16)

declare @vuz_temp char(20)

declare statistic cursor for

select nazvanie_vuza, gok, count(*) from arm

join vuz_gorod on vuz_k=cod_vuza

group by nazvanie_vuza,gok

order by nazvanie_vuza

--инициализация

select @vuz_itog = 0

select @summary = 0

open statistic

--пробный fetch

fetch statistic into @vuz_name,@year_dig,@year_itog

--проверка статуса

--крах

if (@@fetch_status=-2)

begin

print 'Ошибка при выполнении первого FETCH'

close statistic

return

end

--отсутствие данных

if (@@fetch_status=-1)

begin

print 'Данные не найдены'

close statistic

return

end

--нормальный ход событий

select @vuz_itog = @vuz_itog+@year_itog

select @summary = @summary + @year_itog

select @vuz_temp = @vuz_name

print 'В вузе '+@vuz_name+' училось '+str(@year_itog)+' человек/а, окончивших учебу в '+@year_dig+' году'

while(@@FETCH_STATUS=0)

begin

--выборка следующей записи

fetch statistic into @vuz_name,@year_dig,@year_itog

--если поменялся город,то:

if(@vuz_name!=@vuz_temp)

begin

print 'В вузе '+@vuz_temp+' всего учится '+str(@vuz_itog)+'человек/а'

select @vuz_temp = @vuz_name

select @vuz_itog = 0

end

--если закончились данные

if (@@FETCH_STATUS = -1)

begin

break

end

print 'В вузе '+@vuz_name+' училось '+str(@year_itog)+' человек/а, окончвших учебу в '+@year_dig+' году'

select @vuz_itog = @vuz_itog+@year_itog

select @summary = @summary+@year_itog

end

close statistic

print 'В вузе '+@vuz_name+' всего учится '+str(@vuz_itog)+' человек/а'

print '-----------------------------'

print 'Всего по запросу - '+str(@summary)

deallocate statistic

return