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

Национальный Исследовательский Университет

Московский Энергетический Институт

Кафедра Прикладной Математики

Лабораторная работа №8

Использование хранимых процедур для выполнения многомерных статистических запросов

Выполнили: Бочаров Иван

Кобец Сергей

А-13-08

Преподаватель: Сидорова Н.П.

Москва 2011г.

Задание 1

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

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

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

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

--с заголовка: ГОРОД <название> - ВСЕГО <цифра> (где <цифра> не равна нулю),

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

create procedure lr8_1 as

declare @spec_itog int

declare @city_itog int

declare @summary int

declare @city_name char(20)

declare @spec_name char(6)

declare @city_temp char(20)

declare statistic cursor for

select nazvanie_goroda, spec, count(*) from arm

join vuz_gorod on vuz_k = cod_vuza

group by nazvanie_goroda,spec

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

select @city_itog = 0

select @summary = 0

open statistic

--пробный fetch

fetch statistic into @city_name,@spec_name,@spec_itog

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

--крах

if (@@fetch_status=-2)

begin

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

close statistic

return

end

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

if (@@fetch_status=-1)

begin

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

close statistic

return

end

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

select @city_itog = @city_itog+@spec_itog

select @summary = @summary + @spec_itog

select @city_temp = @city_name

print 'В городе '+@city_name+' учится '+str(@spec_itog)+' человек/а по специальности '+@spec_name

while(@@FETCH_STATUS=0)

begin

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

fetch statistic into @city_name,@spec_name,@spec_itog

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

if(@city_name!=@city_temp)

begin

print 'В городе '+@city_name+' всего учится '+str(@city_itog)+'человек/а'

select @city_temp = @city_name

select @city_itog = 0

end

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

if (@@FETCH_STATUS = -1)

begin

break

end

print 'В городе '+@city_name+' учится '+str(@spec_itog)+' человек/а по специальности '+@spec_name

select @city_itog = @city_itog+@spec_itog

select @summary = @summary+@spec_itog

end

close statistic

print 'В городе '+@city_name+' всего учится '+str(@city_itog)+' человек/а'

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

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

deallocate statistic

return

Перепишем запрос с целью использования выходного параметра. В нем будет содержаться общее число записей по запросу.