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


         

функция возвращает значение, которое присваивается


Хранимая процедура- функция возвращает значение, которое присваивается переменной, определяющей имя процедуры. Процедура в явном виде не возвращает значение, но в ней может быть использовано ключевое слово 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


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

    Содержание  Назад  Вперед