Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab4.1.doc
Скачиваний:
1
Добавлен:
12.11.2019
Размер:
1.06 Mб
Скачать

Операторские скобки

BEGIN

/* в них нельзя помещать команды, изменяющие структуры объектов БД. Операторские скобки должны содержать хотя бы один оператор. Требуются для конструкций поливариантных ветвлений, условных и циклических конструкций

*/

END

Условная конструкция if

Синтаксис:

If условие

Набор операторов1

ELSE

Набор операторов2

Пример:

DECLARE @a INT

DECLARE @str CHAR(30)

SET @a = (SELECT COUNT(*) FROM teachers)

IF @a >100

BEGIN

SET @str = 'Количество преподавателей больше 100'

SELECT @str

END

ELSE

BEGIN

SET @str = 'Количество преподавателей = ' + str(@a)

SELECT @str

END

Цикл while

Синтаксис:

WHILE Условие

Набор операторов1

BREAK

Набор опреторов2

CONTINUE

Конструкции BREAK и CONTINUE являются необязательными. Цикл можно принудительно остановить, если в его теле выполнить команду BREAK. Если же нужно начать цикл заново, не дожидаясь выполнения всех команд в теле, необходимо выполнить команду CONTINUE.

Пример:

DECLARE @a INT

SET @a = 1

WHILE @a <100

BEGIN

PRINT @a -- вывод на экран значения переменной

IF (@a>40) AND (@a<50)

BREAK --выход и выполнение 1-й команды за циклом

ELSE

SET @a = @a+rand()*10

CONTINUE

END

PRINT @a

Хранимые процедуры

Хранимые процедуры представляют собой набор команд, состоящий из одного или нескольких операторов SQL или функций и сохраняемый в базе данных в откомпилированном виде.

Системные хранимые процедуры предназначены для выполнения различных административных действий. Практически все действия по администрированию сервера выполняются с их помощью. Можно сказать, что системные хранимые процедуры являются интерфейсом, обеспечивающим работу с системными таблицами. Системные хранимые процедуры имеют префикс sp_, хранятся в системной базе данных и могут быть вызваны в контексте любой другой базы данных.

Пользовательские хранимые процедуры реализуют те или иные действия. Хранимые процедуры – полноценный объект базы данных. Вследствие этого каждая хранимая процедура располагается в конкретной базе данных, где и выполняется.

Перейдём к созданию хранимых процедур. Для работы с хранимыми процедурами в обозревателе объектов необходимо выделить папку «Programmability/Stored Procedures» базы данных «db_students». Для создания новой хранимой процедуры щёлкним ПКМ по папке «Stored Procedures» и в появившемся меню выберем пункт «New Stored Procedure». Появиться окно кода новой хранимой процедуры:

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

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

• SET ANSI_NULLS ON – включает использование значений NULL

(Пусто) в кодировке ANSI,

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

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

@<Имя параметра> <Тип данных> = <Значение по умолчанию>

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

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

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

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

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

Рассмотрим код процедуры более подробно:

1. CREATE PROCRDURE mult – определяет имясоздаваемой процедуры;

2. @Value1 Real = 3, @Value2 Real = 7 - определяют два параметра процедуры Value1, Value2. Данным

параметрам можно присвоить дробные числа (Тип данных Real), значения по умолчанию равны 3 и 7;

3. SELECT 'Произведение'=@Value1*@Value2 – вычисляет произведение и выводит результат с подписью «'Произведение'».

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

Проверим работоспособность созданной хранимой процедуры. Для запуска хранимой процедуры необходимо создать новый пустой запрос, нажав на кнопку (Новый запрос) на панели инструментов. В появившемся окне с пустым запросом наберем команду EXEC mult и нажмите кнопку на панели инструментов:

В нижней части окна с кодом появиться результат выполнения новой хранимой процедуры:

Создадим хранимую процедуру для отбора преподавателей из таблицы студенты по их «ФИО».

Рассмотрим код процедуры:

1. CREATE PROCEDURE proc_teachers –определяет имя создаваемой процедуры как proc_teachers;

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

3. SELECT * FROM dbo.teachers WHERE fio=@FIO – отобразить все поля (*) из таблицы dbo.teachers, где значение поля fio равно значению параметра @FIO).

Проверим работоспособность созданной хранимой процедуры. Создадим новый пустой запрос. В появившемся окне с пустым запросом наберем команду:

EXEC proc_teachers 'Петров'

и нажмем кнопку на панели инструментов.

Замечание: нельзя создавать процедуры с одинаковым именем таблицы!

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]