Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab8_SQL.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
284.67 Кб
Скачать

Использование входных параметров

С технической точки зрения параметры являются временны­ми переменными, поскольку они хранятся в памяти, а их содержимое может изме­няться. Например, в предыдущей хранимой процедуре вместо статичного значения '1/1/2003' следовало использовать входной параметр. Тогда пользователи могли бы задавать дату по своему усмотрению. Чтобы продемонстрировать принцип дей­ствия входных параметров, мы модифицируем ранее созданную хранимую процеду­ру dbo.Show_Orders, чтобы она принимала параметры от пользователей (этим мы продемонстрируем не только принцип действия параметров, но и метод модификации существующей хранимой процедуры).

  1. Откройте SQL Server Management Studio. В окне Object Explorer раскрой­те папки сервера Databases=> Sales=> Prograramability=> Stored Procedures.

  2. Щелкните правой кнопкой на хранимой процедуре dbo.Show_Sales и выберите команду Modify. Откроется редактор запросов SQL Server с шаблоном запроса на изменение хранимой процедуры.

  3. В секции Add the parameters for the stored procedure here вместо шаблона параметра введите имя (@Date), тип (Datatime) и значение по умолчанию (‘1/1/2000’).

  4. Чтобы использовать новый параметр, модифицируйте запрос в секции Insert statements for procedure (рис.3):

SELECT ProdID, Qty, OrdDate

FROM dbo.Sales

WHERE OrdDate > @Date

ORDER BY OrdDate, ProdID

5. Чтобы сохранить изменения, щелкните на кнопке Save панели инструментов.

Итак, у нас имеется модифицированная хранимая процедура dbo.Show_ Orders, принимающая параметр пользователя. Осталось протестировать ее.

1. Чтобы протестировать процедуру, откройте новый запрос SQL Server и выпол­ните следующий код:

USE Sales

EXEC dbo.Show_Sales '5/7/2008'

2. Теперь попробуйте ввести другую дату.

USE Sales

EXEC dbo.Show_Sales '5/13/2008'

  1. Закройте окно запроса.

Рис. 3. Добавляем в хранимую процедуру параметры

Подумайте хорошенько о том, что вы только что сделали. Вместо того, чтобы вынуждать пользователей извлекать данные лишь для 1 января 2003 года, вы предо­ставили им возможность делать это для любой даты. А потребовалось-то всего доба­вить в начало хранимой процедуры переменную @Date. В нашем случае переменной @Date сначала была присвоена дата 7 мая 2008 года, а затем 13 мая 2008 года. Если пользователь не введет дату, то на этот случай для входного параметра предусмотрено значение по умолчанию (1января 2000 года). Мы это сделали путем добавления оператора @Date datetime = '1/1/2000'.

Однако это далеко не все возможности хранимых процедур. Предположим, что пользователи не хотят видеть результат запроса, а лишь результат выполнения математических операций. Чтобы удовлетворить такие потреб­ности, можно создать хранимую процедуру, использующую как входные, так и выход­ные параметры.

Использование выходных параметров

Выходной параметр противоположен входному. С помощью входного параметра вы задаете хранимой процедуре значение для работы; с помощью выходного параме­тра хранимая процедура возвращает значение, используемое в дальнейших запросах. Выходной параметр создается в том же месте, где и входной — между именем про­цедуры и ключевым словом AS. Единственное отличие состоит в том, что выходной параметр определяется с помощью ключевого слова OUTPUT. В следующем примере мы создадим простую хранимую процедуру калькулятора, чтобы увидеть возможно­сти выходного параметра.

  1. Откройте SQL Server Management Studio. В окне Object Explorer разверните папки сервера Databases=> Sales=> Programmability.

  2. Щелкните правой кнопкой на папке Stored Procedures и выберите команду New Stored Procedure. Откроется редактор запросов SQL Server с шаблоном запроса на создание хранимой процедуры.

  3. В предложении CREATE PROCEDURE введите имя процедуры: Calc.

  4. В секции Add the parameters for the stored procedure here для создания первого входного параметра используйте следующие данные:

  • Parameter Name: @ first

  • Datatype: int

  • Value_Default:: 0

  1. Для создания второго входного параметра используйте следующие данные:

  • Parameter Name: @sec

  • Datatype: int

  • Value_Default:: 0

  1. Для создания выходного параметра используйте следующие данные:

  • Parameter Name: @ret

  • Datatype: int

  • Value_Default:: 0

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]