Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие по выполнению лабораторных работ по SQL.doc
Скачиваний:
167
Добавлен:
01.05.2014
Размер:
1.22 Mб
Скачать

Оператор use

Синтаксис оператора USE

С помощью оператора USE устанавливается текущая база данных.

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

Оператор declare

Синтаксис оператора DECLARE

DECLARE @<имя переменной><тип переменной>[,…]

DECLARE @IPIN int

Одним оператором DECLARE может быть объявлена как одна, так и несколько переменных. Объявленное значение переменной не определено (NULL) пока ей не будет присвоено значение. Присвоение переменной того или иного значения осуществляется либо с использованием оператора SET, либо SELECT.

Операторы set и select

Синтаксис оператора SET

SET <имя переменной>=<значение переменной>

Синтаксис оператора SELECT

SELECT <имя переменной> = <значение переменной>

Пример 85

Задание.

Присвоить значения переменным, используя оператор SET

Решение.

declare @AvgMark int

declare @TotalSumma decimal

declare @MSumma decimal

SET @AvgMark=4

SET @TotalSumma=@MSumma*1.8

SET @AvgMark=(Select AVG(Mark) FROM Progress)

Различия между использованием SET и SELECT при присвоении значения переменной практически не существует. Когда применять тот или иной оператор решать пользователю. Однако, поскольку, при присвоении переменной значения полученного из запроса, код запроса несколько короче при использовании SELECT, то его в этом случае чаще всего и применяют. То есть, SET используют для присвоения известного значения переменной, SELECT – для присвоения переменной результата запроса.

Use Student

DECLARE @AvgMark Numeric (5,2)

SET @AvgMark= AVG(Mark) FROM Progress

SELECT @AvgMark

SQL Server 2000 выдаёт ошибку:

Incorrect syntax near the keyword 'FROM'.

Но!!!

Use Student

DECLARE @AvgMark Numeric (5,2)

SET @AvgMark=(SELECT AVG(Mark) FROM Progress)

SELECT @AvgMark

Результат выполнения запроса.

Наиболее часто применимый код

Use student

DECLARE @AvgMark Numeric (5,2)

SELECT @AvgMark= AVG(Mark) FROM Progress

SELECT @AvgMark

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

  • @@IDENTITY

  • @@ERROR

Функция @@identity

Функция @@IDENTITY - возвращает автоматически сгенерированное последним оператором значение. Необходима в тех случаях, когда применяются столбцы с уникальным сгенерированным значением и существует ссылка на них в дочерних таблицах. Хранит только последнее вставленное значение, предыдущее значение не будет сохранено, если его предварительно не записали в переменную. Если при выполнении последней команды INSERT ни один вставленный столбец не будет иметь уникального значения, то @@IDENTITY будет иметь признак NULL.

Функция @@error

Функция @@ERROR содержит код ошибки последнего выполняемого в текущем подключении оператора T-SQL. Код ошибки есть целое число (Integer). Если ошибка отсутствует, то значение переменной равно 0. Жизненный цикл переменной ограничивается одним оператором. Если необходимо проверить ошибку в конкретном операторе, то это следует делать в операторе, непосредственно следующем за данным, либо сохранить значение системной переменной для дальнейшего использования

Перечень ошибок хранится в базовой таблице SYSMESSAGES базы данных MASTER. Для добавления собственного списка ошибок используют хранимую процедуру sp_addmessage.

Пример 86

Задание.

Создать хранимую процедуру, которая создаёт список студентов и их номеров зачёток и упорядочивает их по имени.

Решение:

CREATE PROCEDURE NameStudent

as

SELECT StName ФИО,NRecordBook [№ зачётки]

FROM Student

ORDER BY StName DESC

EXECNameStudent

Результат выполнения запроса: