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

Задание 10

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

alter procedure be4 as

declare @ac integer

declare x cursor for

select count(*)

from bel

where gok = '93'

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 'Всего в 1993м году - ' + str(@ac )

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

close x

return

deallocate x

alter procedure vs as

declare @vuz char(25)

declare @spec char(6)

declare @sc integer

declare @vc integer

declare @vuz1 char(25)

declare y cursor for

select vuz.uch_zavedenie, spec, count(*)

from bel join vuz on vuz_k = cod

where gok = '93'

group by vuz.uch_zavedenie,spec

order by vuz.uch_zavedenie

select @vc = 0

open y

fetch y into @vuz, @spec, @sc

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 @spec+' -'+str(@sc)

select @vc = @vc + @sc

while (@@FETCH_STATUS = 0)

begin

fetch y into @vuz, @spec, @sc

if (@vuz != @vuz1) begin

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

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

select @vuz1 = @vuz

select @vc = 0

end

if (@@FETCH_STATUS = -1) break

print @spec + ' - ' + str(@sc)

select @vc = @vc + @sc

end

close y

if (@@FETCH_STATUS = -2) begin

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

return

end

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

deallocate y

return

exec be4

exec vs

Задание 11

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

create procedure be5 as

declare @ac integer

declare x cursor for

select count(*)

from bel

where gp = '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 'Всего в 1991м году - ' + str(@ac )

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

close x

return

deallocate x

create procedure kg as

declare @kat char(25)

declare @gor char(6)

declare @gc integer

declare @kc integer

declare @kat1 char(25)

declare y cursor for

select kat_obuch.kat_obucheniya, vuz_gorod.nazvanie_goroda, count(*)

from bel join vuz_gorod on vuz_k = vuz_gorod.cod_vuza

join kat_obuch on kat_obuch.cod = kat_obuch_k

where gp = '91'

group by kat_obuch.kat_obucheniya, vuz_gorod.nazvanie_goroda

order by kat_obuch.kat_obucheniya

select @kc = 0

open y

fetch y into @kat, @gor, @gc

if(@@FETCH_STATUS = -2) begin

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

close y

return

end

if(@@FETCH_STATUS = -1) begin

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

close y

return

end

select @kat1 = @kat

print @gor+' -'+str(@gc)

select @kc = @kc + @gc

while (@@FETCH_STATUS = 0)

begin

fetch y into @kat, @gor, @gc

if (@kat != @kat1) begin

print 'Категория ' + @kat1 + ' - ' + str(@kc)

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

select @kat1 = @kat

select @kc = 0

end

if (@@FETCH_STATUS = -1) break

print @gor + ' - ' + str(@gc)

select @kc = @kc + @gc

end

close y

if (@@FETCH_STATUS = -2) begin

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

return

end

print 'Категория ' + @kat + ' - ' + str(@kc)

deallocate y

return

exec be5

exec kg