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

Задание 6

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

create procedure pv as

declare @vuz char(20)

declare @gok char(2)

declare @vc integer

declare @oc integer

declare @ac integer

declare @vuz1 char(20)

declare y cursor for

select vuz.uch_zavedenie, gok, count(*)

from bel join vuz on vuz_k = cod

group by vuz.uch_zavedenie,gok

order by vuz.uch_zavedenie

select @vc = 0

select @ac = 0

open y

fetch y into @vuz, @gok, @oc

if(@@FETCH_STATUS = -2) begin

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

close y

return

end

if(@@FETCH_STATUS = -1) begin

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

close y

return

end

select @vuz1 = @vuz

print @gok+' -'+str(@oc)

select @vc = @vc + @oc

select @ac = @ac + @oc

while (@@FETCH_STATUS = 0)

begin

fetch y into @vuz, @gok, @oc

if (@vuz != @vuz1) begin

print 'ВУЗ ' + @vuz1 + ' - ' + str(@vc)

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

select @vuz1 = @vuz

select @vc = 0

end

if (@@FETCH_STATUS = -1) break

print @gok + ' - ' + str(@oc)

select @vc = @vc + @oc

select @ac = @ac + @oc

end

close y

if (@@FETCH_STATUS = -2) begin

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

return

end

print 'ВУЗ ' + @vuz + ' - ' + str(@vc)

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

print'всего по запосу - ' + str(@ac)

deallocate y

return

pv

Задание 7

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

alter procedure vk as

declare @vuz char(25)

declare @ko char(20)

declare @vc integer

declare @kc integer

declare @vuz1 char(25)

declare y cursor for

select vuz.uch_zavedenie, kat_obuch.kat_obucheniya, count(*)

from bel join vuz on vuz_k = cod

join kat_obuch on kat_obuch.cod = kat_obuch_k

where gok = '94'

group by vuz.uch_zavedenie,kat_obuch.kat_obucheniya

order by vuz.uch_zavedenie

select @vc = 0

open y

fetch y into @vuz, @ko, @kc

if(@@FETCH_STATUS = -2) begin

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

close y

return

end

if(@@FETCH_STATUS = -1) begin

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

close y

return

end

select @vuz1 = @vuz

print @ko+' -'+str(@kc)

select @vc = @vc + @kc

while (@@FETCH_STATUS = 0)

begin

fetch y into @vuz, @ko, @kc

if (@vuz != @vuz1) begin

print 'ВУЗ ' + @vuz1 + ' - ' + str(@vc)

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

select @vuz1 = @vuz

select @vc = 0

end

if (@@FETCH_STATUS = -1) break

print @ko + ' - ' + str(@kc)

select @vc = @vc + @kc

end

close y

if (@@FETCH_STATUS = -2) begin

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

return

end

print 'ВУЗ ' + @vuz + ' - ' + str(@vc)

deallocate y

return

alter procedure be as

declare @ac integer

declare x cursor for

select count(*)

from bel

where gok = '94'

open x

fetch x into @ac

if(@@FETCH_STATUS = -2) begin

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

close x

return

end

if(@@FETCH_STATUS = -1) begin

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

close x

return

end

print 'Всего - ' + str(@ac )

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

close x

return

deallocate x

exec be

exec vk