Базы данных - модели, разработка, реализация


Хранимые процедуры - часть 3


Хранимая процедура-функция возвращает значение, которое присваивается переменной, определяющей имя процедуры. Процедура в явном виде не возвращает значение, но в ней может быть использовано ключевое слово OUTPUT, которое определяет, что данный параметр является выходным.

Рассмотрим несколько примеров простейших хранимых процедур.

  • /* процедура проверки наличия экземпляров данной книги
  • параметры:
  • @ISBN шифр книги
  • процедура возвращает параметр, равный количеству экземпляров
  • Если возвращается ноль, то это значит, что нет свободных экземпляров данной
  • книги в библиотеке.
  • */
  • CREATE PROCEDURE COUNT_EX (@ISBN varchar(12))
  • AS
  • /* определим внутреннюю переменную */
  • DECLARE @TEK_COUNT int
  • /* выполним соответствующий оператор SELECT
  • Будем считать только экземпляры, которые в настоящий момент находятся
  • не на руках у читателей, а в библиотеке */
  • select @TEK_COUNT = select count(*) FROM EXEMPLAR WHERE ISBN = @ISBN
  • AND READER_ID Is NULL AND EXIST = True
  • /* 0 - ноль означает, что нет ни одного свободного экземпляра данной книги
  • в библиотеке */
  • RETURN @TEK_COUNT

Хранимая процедура может быть вызвана несколькими способами. Простейший способ - это использование оператора:

  • EXEC ...
  • ...

При этом все входные и выходные параметры должны быть заданы обязательно и в том порядке, в котором они определены в процедуре.

261

Например, если мне надо найти число экземпляров книги "Oracle8. Энциклопедия пользователя", которая имеет ISBN 966-7393-08-09, то текст вызова ранее созданной хранимой процедуры может быть следующим:

  • /*определили две переменные
  • @Ntek - количество экземпляров данной книги в наличие в библиотеке
  • @ISBN - международный шифр книги */
  • declare @Ntek int
  • DECLARE @ISBN VARCHAR(14)
  • /* Присвоим значение переменной @ISBN */
  • Select @ISBN = ?966-7393-08-09?
  • /* Присвоим переменной @Ntek результаты выполнения хранимой процедуры
  • COUNT_EX */
  • EXEC @Ntek - COUNT_EX @ISBN

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


- Начало -  - Назад -  - Вперед -



Книжный магазин