Выполнение процедуры осуществляется с помощью команды
EXEC[UTE] имя процедуры [@параметр = значение]
Значение параметра задается путем передачи значения или ссылки на позицию.
Передача параметра со ссылками на имена осуществляется следующим образом: @параметр = значение. При этом значения параметров можно указывать в любом порядке, а параметры, имеющие значение по умолчанию, опускать.
Передача значений без ссылок на имена параметров называется передачей значений по позиции. Если указываются только значения, их следует перечислять в порядке определения в операторе CREATE PROC. При этом можно опускать параметры, имеющие значения по умолчанию, но последовательность параметров нарушать нельзя.
Возврат значений при помощи параметров вывода.
Для использования параметра вывода ключевое слово OUTPUT должно указываться как в операторе CREATEPROC, так и в операторе EXEC. Вызывающий оператор должен указать для параметра вывода имя переменной.
Пример: создается хранимая процедура для вычисления суммы 2 чисел.
USE <имя БД>
@A smallint,
@B smallint,
@S smallint OUTPUT
SET @S= @A+@B
Вызов:
DECLARE @result smallint
EXEC SUMMA 5,7,@result OUTPUT
SELECT ‘результат=’, @result
После выполнения оператора EXEC переменная @result будет хранить значение параметра вывода. Вывод значения осуществляется оператором SELECT.
Процедуры могут быть процедурами или функциями. Эти понятия трактуются традиционно. Процедура в явном виде не возвращает значение, но в ней может быть использовано ключевое слово, которое определяет, что данный параметр является выходным.
Примеры:
1.Создадим процедуру NEW_COURSE для увеличения значения атрибута COURSE при переводе студентов на следующий курс.
SET COURS=COURSE + 1
Вызов процедуры:
2. Создадим процедуру для начисления стипендии студентам в зависимости от полученного среднего балла. В процедуру передается значение среднего балла, в зависимости от которого система устанавливает ставку стипендии.