Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу ИСиТ.docx
Скачиваний:
6
Добавлен:
07.02.2024
Размер:
1.07 Mб
Скачать

Вызов хранимых процедур

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

EXEC procedure_name

Если в хранимой процедуре предусмотрена обработка параметров, можно указать значения аргументов.

Предоставленное значение должно быть константой или переменной; нельзя указывать имя функции в качестве значения аргумента. Переменные могут быть пользовательскими или системными, например @@spid.

EXEC procedure_name value1, value2 ...

Примеры:

В следующих примерах демонстрируется передача значений аргументов хранимой процедуре uspSaleProduct. Процедура ожидает значений для двух входных аргументов: кода продукта и даты.

Пример 1:

Передача констант в качестве значений параметров

EXEC dbo.uspSaleProduct 819, '20050225';

Пример 2:

Передача переменных в качестве значений параметров

DECLARE @ProductID int, @SaleDate datetime;

SET @ProductID = 819;

SET @SaleDate = '20050225';

EXEC dbo.uspSaleProduct @ProductID, @SaleDate;

Пример 3:

Передача имени функции в качестве значений параметров. Данный вызов порождает ошибку, поскольку имя функции нельзя указывать в качестве значения аргумента

EXEC dbo.uspSaleProduct 819, GETDATE();

Пример 3:

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

DECLARE @SaleDate datetime;

SET @SaleDate = GETDATE();

EXEC dbo.uspSaleProduct 819, @SaleDate;

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

EXEC procedure_name @arg1=value1, @arg2= value2 ...

При выполнении хранимой процедуры сервер отвергает любые аргументы, не включенные в список аргументов в процессе создания процедуры. Любой аргумент, переданный ссылкой (явно передающей имя аргумента) не принимается, если имя аргумента не совпадает.

Примеры:

В следующих примерах демонстрируется передача значений аргументов хранимой процедуре uspSaleProduct в виде @аргумент = value. Процедура ожидает значений для двух входных аргументов: кода продукта и даты.

Пример 1:

Передача параметров в порядке следования в команде CREATE PROCEDURE

EXEC dbo.uspSaleProduct @SaleDate='20050225', @ProductID=819;

Пример 2:

Передача параметров в обратном порядке

EXEC dbo.uspSaleProduct @ProductID=819, @SaleDate='20050225';

Хотя разрешается опустить аргументы, для которых предоставлены значения по умолчанию, список аргументов можно лишь подвергнуть усечению (т.е. не передавать значения параметров идущих в конце списка параметров и имеющих DEFAULT значение). Например, когда в хранимой процедуре присутствует пять аргументов, можно опустить четвертый и пятый, но нельзя пропустить четвертый и включить пятый, если только аргументы не были предоставлены в формате @аргумент = value.

Значение по умолчанию, определенное для аргумента в хранимой процедуре, используется, когда:

  • не указано значение для аргумента при выполнении хранимой процедуры;

  • в качестве значения для аргумента указывается ключевое слово DEFAULT.

Соседние файлы в предмете Информатика