Корпоративные базы данных - статьи




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


Хранимые процедуры SQLBase могут
содержать параметры двух типов: для ввода и для вывода. Параметры вывода обозначаются
ключевым словом RECEIVE перед описанием типа переменной. Эти параметры эквивалентны
списку into-переменных в запросах SELECT.

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


  • Процедурная логика. Этот раздел начинается с ключевого слова
    ACTIONS. Он содержит всю логику и выполняемые инструкции процедуры.
    Весь код этого раздела пишется на языке SAL. Хранимые процедуры SQLBase
    поддерживают некоторое подмножество полного языка SAL. Например, в
    текущей версии SQLBase реализована поддержка только тех функций SAL,
    которые начинаются с префикса Sql ( SqlPrepare()). Поддержка
    остальных функций (начинающихся с префикса Sal) будет реализована в
    последующих версиях продукта.

Раздел процедурной логики может также состоять из следующих необязательных секций:

ON PROCEDURE STARTUP - Эта секция используется для процедур инициализации,
таких как установление контакта с базой данных, компиляция запросов и т.д. Она выполняется
только во время первого выполнения хранимой процедуры.

ON PROCEDURE EXECUTE - Данная секция выполняется всякий раз, когда хранимая
процедура выполняется командой EXECUTE. Во время первого выполнения эта секция
выполняется после секции ON PROCEDURE STARTUP. Во время всех последующих команд
EXECUTE выполняется только эта секция.

ON PROCEDURE FETCH - Эта секция выполняется всякий раз, когда процедуре
передается команда FETCH в случае использования процедуры в качестве result set (не забудьте,
что хранимые процедуры ведут себя подобно запросам SELECT). При этом строки из множества
результатов возвращаются из процедуры посредством переменных типа RECEIVE.

ON PROCEDURE CLOSE - Данная секция выполняется в тот момент, когда для курсора,
связанного с хранимой процедурой, происходит компиляция нового запроса или этот курсор
отсоединяется от базы данных.


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