Синтаксис оператора SET
SET <имя переменной>=<значение переменной>
Синтаксис оператора SELECT
SELECT <имя переменной> = <значение переменной>
Пример 87
Задание.
Присвоить значения переменным, используя оператор 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.
Пример 88
Задание.
Создать хранимую процедуру, которая создаёт список студентов и их номеров зачёток и упорядочивает их по имени.
|
|
Решение:
CREATE PROCEDURE PStudentSNameView
as
SELECT SName ФИО, NRecordBook [№ зачётки]
FROM Student
ORDER BY SName
EXEC PStudentView
Результат выполнения запроса: