Помощь в написании студенческих работ
Антистрессовый сервис

Лабораторная работа: Хранимые процедуры

РефератПомощь в написанииУзнать стоимостьмоей работы

ФИО,. Дата рождения], 'Возраст'=DATEDIFF (yy,. Дата рождения], GETDATE ()) — отображает из запроса «Запроса Студенты+Специальности» (FROM) поля «ФИО» (ФИО) и «Дата рождения» (. Дата рождения]), а также отображает возраст студента ('Возраст') в годах (yy), вычисленный исходя из его даты рождения и текущей даты (DATEDIFF (yy,. Дата рождения], GETDATE ())). Более того, выводятся студенты возраст… Читать ещё >

Лабораторная работа: Хранимые процедуры (реферат, курсовая, диплом, контрольная)

Цель: научиться работать с хранимыми процедурами Перейдем к созданию хранимых процедур. Для работы с хранимыми процедурами в обозревателе объектов необходимо выделить папку" Programmability/Stored Procedures" базы данных «Students» (рис. 10.1).

Рис. 10.1.

Рис. 10.1.

Создадим процедуру, вычисляющую среднее трех чисел. Для создания новой хранимой процедуры щелкните ПКМ по папке «Stored Procedures» (рис. 10.1) и в появившемся меню выберите пункт «New Stored Procedure». Появиться окно кода новой хранимой процедуры (рис. 10.2).

Рис. 10.2.

Рис. 10.2.

Хранимая процедура имеет следующую структуру (рис. 10.2):

Область настройки параметров синтаксиса процедуры. Позволяет настраивать некоторые синтаксические правила, используемые при наборе кода процедуры. В нашем случае это:

SET ANSI_NULLS ON — включает использование значений NULL (Пусто) в кодировке ANSI,.

SET QUOTED_IDENTIFIER ON — включает возможность использования двойных кавычек для определения идентификаторов;

Область определения имени процедуры (Procedure_Name) и параметров передаваемых в процедуру (@Param1, @Param2). Определение параметров имеет следующий синтаксис:

@ =.

Параметры разделяются между собой запятыми;

Начало тела процедуры, обозначается служебным словом «BEGIN» ;

Тело процедуры, содержит команды языка программирования запросов T-SQL;

Конец тела процедуры, обозначается служебным словом «END» .

Замечание: В коде зеленым цветом выделяются комментарии. Они не обрабатываются сервером и выполняют функцию пояснений к коду. Строки комментариев начинаются с подстроки «—». Далее в коде, мы не будем отображать комментарии, они будут свернуты. Слева от раздела с комментариями будет стоять знак «+», щелкнув по которому можно развернуть комментарий.

Наберем код процедуры вычисляющей среднее трех чисел, как это показано на рис. 10.3.

Рис. 10.3.

Рис. 10.3.

Рассмотрим код данной процедуры более подробно (рис. 10.3):

CREATE PROCEDURE [Среднее трех величин] - определяет имя создаваемой процедуры как «Среднее трех величин» ;

@Value1 Real = 0, @Value2 Real = 0, @Value3 Real = 0 — определяют три параметра процедуры Value1, Value2 и Value3. Данным параметрам можно присвоить дробные числа (Тип данных Real), значения по умолчанию равны 0;

SELECT 'Среднее значение'=(@Value1+@Value2+@Value3)/3 — вычисляет среднее и выводит результат с подписью «Среднее значение» .

Остальные фрагменты кода рассмотрены выше (рис. 10.2).

Для создания процедуры, выполним вышеописанный код, нажав кнопку.

(Выполнить) на панели инструментов. В нижней части окна с кодом появиться сообщение «Command (s) completed successfully.». Закройте окно с кодом, щелкнув мышью по кнопке закрытия расположенной в верхнем правом углу окна с кодом процедуры.

Проверим работоспособность созданной хранимой процедуры. Для запуска хранимой процедуры необходимо создать новый пустой запрос, нажав на кнопку.

(Новый запрос) на панели инструментов. В появившемся окне с пустым запросом наберите команду EXEC [Среднее трех величин] 1, 7, 9 и нажмите кнопку на панели инструментов (рис. 10.4).

Рис. 10.4.

Рис. 10.4.

В нижней части окна с кодом появиться результат выполнения новой хранимой процедуры: Среднее значение 5,66 667 (рис. 10.4).

Теперь создадим хранимую процедуру для отбора студентов из таблицы студенты по их «ФИО». Для этого создайте новую хранимую процедуру, как это описано выше, и наберите код новой процедуры как на рис. 10.5.

Рассмотрим код процедуры «Отображение студентов по ФИО» более подробно (рис. 10.5):

CREATE PROCEDURE [Отображение студентов по ФИО] - определяет имя создаваемой процедуры как «Отображение студентов по ФИО» ;

@FIO Varchar (50)='' - определяют единственный параметр процедуры FIO. Параметру можно присвоить текстовые строки переменной длины, длинной до 50 символов (Тип данных Varchar (50)), значения по умолчанию равны пустой строке;

SELECT * FROM dbo. Студенты WHERE ФИО=@FIO — отобразить все поля (*) из таблицы студенты (dbo.Студенты), где значение поля ФИО равно значению параметра FIO (ФИО=@FIO).

Выполним вышеописанный код и закроем окно с кодом, как описано выше.

Проверим работоспособность созданной хранимой процедуры. Создайте новый пустой запрос. В появившемся окне с пустым запросом наберите команду EXEC [Отображение студентов по ФИО] 'Иванов А.И.' и нажмите кнопку на панели инструментов (рис. 10.6).

Рис. 10.6.

Рис. 10.6.

В нижней части окна с кодом появиться результат выполнения хранимой процедуры «Отображение студентов по ФИО» (рис. 10.6).

Теперь перейдем к более сложной задаче — отобразить студентов, у которых средний балл выше заданного. Создайте новую хранимую процедуру и наберите код новой процедуры как на рис. 10.7.

Рис. 10.7.

Рис. 10.7.

Рассмотрим код процедуры «Отображение студентов по среднему баллу» более подробно (рис. 10.7):

CREATE PROCEDURE [Отображение студентов по среднему баллу] - определяет имя создаваемой процедуры как «Отображение студентов по среднему баллу» ;

@Grade Real=0 — определяют параметр процедуры Grade. Параметру можно присвоить дробные числа (Тип данных Real), значения по умолчанию равны 0;

SELECT * FROM [Запрос Студенты+Оценки] WHERE ([Оценка первого экзамена]+[Оценка второго экзамена]+[Оценка третьего экзамена])/3>@Grade — отобразить все поля (*) из запроса «Запрос Студенты+Оценки» (Запрос Студенты+Оценки), где средний балл больше чем значение параметра Grade (([Оценка первого экзамена]+[Оценка второго экзамена]+[Оценка третьего экзамена])/3>@Grade).

Выполним вышеописанный код и закроем окно с кодом, как описано выше. Проверим, как работает запрос, описанный выше. Для этого, создайте новый запрос и в нем наберите команду EXEC [Отображение студентов по среднему баллу] 3.5 и выполните ее (Смотри выше) (рис. 10.8).

Рис. 10.8.

Рис. 10.8.

В нижней части окна с кодом появиться результат выполнения хранимой процедуры «Отображение студентов по среднему баллу» (рис. 10.8).

В заключение решим более сложную задачу — отображение студентов старше заданного возраста. При чем возраст будет автоматически вычисляться в зависимости от даты рождения.

Создадим новую хранимую процедуру и наберем код новой процедуры как представлено на рис. 10.9.

Рис. 10.9.

Рис. 10.9.

Рассмотрим код создаваемой процедуры «Отображение студентов по возрасту» более подробно (рис. 10.9):

CREATE PROCEDURE [Отображение студентов по возрасту] - определяет имя создаваемой процедуры как «Отображение студентов по возрасту» ;

@Age int=0 — определяют параметр процедуры Age. Параметру можно присвоить целые числа (Тип данных int), значения по умолчанию равны 0;

ФИО, [Запрос Студенты+Специальности]. Дата рождения], 'Возраст'=DATEDIFF (yy,[Запрос Студенты+Специальности]. Дата рождения], GETDATE ()) — отображает из запроса «Запроса Студенты+Специальности» (FROM [Запрос Студенты+Специальности]) поля «ФИО» (ФИО) и «Дата рождения» ([Запрос Студенты+Специальности]. Дата рождения]), а также отображает возраст студента ('Возраст') в годах (yy), вычисленный исходя из его даты рождения и текущей даты (DATEDIFF (yy,[Запрос Студенты+Специальности]. Дата рождения], GETDATE ())). Более того, выводятся студенты возраст которых больше определенного в параметре «Age» (DATEDIFF (yy,[Запрос Студенты+Специальности]. Дата рождения], GETDATE ())>@Age).

Замечание: Встроенная функция DATEDIFF вычисляющая количество периодов между двумя датами, имеет следующий синтаксис: DATEDIFF (,).

Выполним код запроса «Отображение студентов по возрасту», а затем закроем окно с кодом, как описано выше. Проверим, как работает запрос. Для этого, создадим новый запрос и в нем наберем команду EXEC [Отображение студентов по возрасту] 26 и выполните ее. Должен появиться результат аналогичный результату, представленному на рис. 10.10.

Рис. 10.10.

Рис. 10.10.

На этом мы заканчиваем описание хранимых процедур и переходим к рассмотрению пользовательских функций. В итоге, обозреватель объектов должен иметь вид как на рис. 10.11.

Рис. 10.11.

Рис. 10.11.

Показать весь текст
Заполнить форму текущей работой