Разработка приложений баз данных для СУБД Sybase SQL Anywhere


         

Хранимые процедуры


Хранимые процедуры - это подпрограммы на языке SQL, хранящиеся в базах данных и представляющие собой один из видов их общих ресурсов. Тело любой хранимой процедуры представляет последовательность SQL-операторов, например таких, как выборка данных (SELECT), их модификация (UPDATE), удаление данных (DELETE), операторы цикла (LOOP), условные операторы (IF, CASE) и ряд других. Процедуры вызываются оператором CALL и могут использовать как входные параметры (передающие значения в процедуру), так и выходные параметры (возвращающие результаты процедуры вызывающему программному объекту). Процедуры могут вызываться из процедур, функций и других типов программных объектов.

Хранимые процедуры, создаются оператором CREATE PROCEDURE. Модификация тела хранимой процедуры осуществляется оператором ALTER PROCEDURE. Эти операторы могут использовать:

  • пользователи, которым разрешено создавать объекты базы данных, т.е. тем кто имеет класс полномочий - RESOURCE;
  • администратор базы данных.
  • Приводимый пример иллюстрирует применение оператора CREATE PROCEDURE для создания процедуры Ins_absent. Эта процедура предназначена для фиксирования в базе данных факта выдачи некоторой книги одному из читателей:

    //Создание новой процедуры CREATE PROCEDURE Ins_absent /* Процедура, фиксирующая факт выдачи книги с инвентарным номером par_N_books читателю, имеющему читательскую карточку, с номером Par_N_read Этот факт записывается в таблицу Absent. Владельцем таблицы Absent является пользователь Stepanov. В данной таблице при выполнении оператора INSERT полю Beg_date (дата выдачи книги) по умолчанию присваивается текущая дата. Книга выдается на 15 дней. На основании этого определяется дата ее возврата - значение для поля End_date */ ( IN Par_N_books SMALLINT, IN Par_N_reader SMALLINT ) BEGIN INSERT INTO Stepanov.Absent (n_books, N_reader, End_date) VALUES( Par_N_books, Par_n_reader, (current date+15)) END

    Если выполнить этот оператор в утилите ISQL, то в базе данных будет создана хранимая процедура Ins_absent. Проверить этот факт можно проанализировав содержимое системного представления SYS.SYSPROCPARMS.

    Тело хранимой процедуры является составным оператором, т.е. совокупностью операторов, заключенных между служебными словами BEGIN и END. В приведенном примере составной оператор состоит из одного оператора INSERT. Наряду с SQL-операторами в составном операторе могут быть определены локальные переменные, курсоры, временные таблицы данных и исключительные ситуации. Они доступны только в пределах составного оператора и не видимы за его пределами. Время их существования ограничено периодом исполнения составного оператора. Локальные определения широко используются при разработке программных объектов. Будут они применяться и в данной главе.

    Описание каждого формального параметра в процедуре начинается с одного из служебных слов IN, OUT или INOUT. Они предназначены для указания типа формального параметра. Ниже приводится пояснения к типам формальных параметров:



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