Присвоить значения переменным, используя оператор 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
Задание.
Создать хранимую процедуру, которая создаёт список студентов и их номеров зачёток и упорядочивает их по имени.