Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Название:Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94157-609-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание
Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.
Для разработчиков баз данных
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
SET TERM ^
SET TERM boing! ;
! ! !
СОВЕТ. He будьте только слишком изобретательными при создании ваших строк терминаторов, иначе вам придется набирать большой текст!
. ! .
В определениях PSQL применяйте точку с запятой во всех внутренних операторах за исключением BEGIN и END и используйте альтернативный терминатор в конечном операторе END:
. . .
END ^
Для возврата к "нормальному" оператору терминатора выдайте второй оператор SET TERM, который изменит результат первого:
. . .
END ^
COMMIT ^
SET TERM ;^

Рис. 29.1. Обязательные элементы в определении модуля PSQL
На рис. 29.1 основные элементы определения модуля PSQL отделены для иллюстрации требуемых элементов в секциях HEADER (Заголовок) и BODY (Тело) модуля.
Обязательные части затенены.
Элементы заголовка
Имя процедуры или триггера должно быть уникальным в базе данных.
Для триггера:
* ключевое слово FOR и ИМЯ таблицы идентифицируют ту таблицу, операции с которой вызывают данных триггер;
* режим (ACTIVE или INACTIVE);
* параметр фазы (BEFORE или AFTER) определяет, когда вызывается триггер;
* параметр события (INSERT, UPDATE, DELETE) [113] Начиная с версии 1.5. существует возможность объединять несколько событий в одном триггере. Подробности см. в главе 31.
;
* необязательное ключевое слово POSITION, за которым следует целое число, указывающее последовательность вызова.
Для хранимой процедуры:
* необязательный список входных параметров и их типов данных;
* если процедура возвращает значения вызвавшей программе, то список выходных параметров и их типов данных.
Элементы тела
Для хранимых процедур и триггеров:
* тело модуля может начинаться со списка из одного или более объявлений локальных переменных (имя и тип данных SQL - домен указывать нельзя);
* блок операторов на языке процедур и триггеров Firebird, заключенный в операторные скобки BEGIN и END. Блок сам может включать другие блоки, следовательно, может существовать много уровней вложенности;
* некоторые встроенные блоки могут быть обработчиками исключений, возникающих в предшествующих блоках. Такие блоки являются условными в соответствии с предшествующим предикатом WHEN. Модуль глобальных обработчиков исключений должен предшествовать всем встроенным блокам.
Элементы языка
В табл. 29.1 показаны элементы языка PSQL, доступные в Firebird.
Таблица 29.1. Расширения PSQL для хранимых процедур и триггеров
Оператор |
Описание |
В. 1.5 |
В. 1.0.x |
BEGIN ... END |
Определяет блок операторов, которые выполняются как одно целое. Зарезервированное слово BEGIN начинает блок; зарезервированное слово END завершает его. Ни за одним из них не должна следовать точка с запятой. В версии 1.0.x нельзя выдать оператор CREATE PROCEDURE без хотя бы одного оператора между BEGIN и END. "Пустые" определения допустимы в версии 1.5 и выше |
Да |
Да |
переменная = выражение |
Присваивает значение выражения переменной- локальной переменной, входному параметру или выходному параметру |
Да |
Да |
/* текст комментария */ |
Комментарий программиста, где текст может содержать любое количество строк между парой /* */. Может быть также использован для встроенных комментариев |
Да |
Да |
-- текст комментария |
Комментарий программиста из одной строки, где текст может быть встроенным (только версия 1.5) или может занимать одну строку, где маркер двойного минуса (-) является первым элементом в строке |
Да |
Да |
EXCEPTION имя-исключения |
Вызывает именованное исключение для возможной обработки в блоке WHEN. Само исключение должно быть предварительно определено администратором базы данных с использованием CREATE EXCEPTION |
Да |
Да |
EXCEPTION |
Вызывает исключение |
Да |
Нет |
EXCEPTION имя-исключения сообщение-времени-выполнения |
Вызывает именованное исключение и присоединяет к нему сообщение времени выполнения - локальную переменную типа VARCHAR, которой во время выполнения может быть присвоено значение. Подробности определения и использования исключений см. в главе 32 |
Да |
Нет |
EXECUTE PROCEDURE имя-процедуры [переменная [, переменная ...]] [ RETURNING_VALUES переменная [, переменная. . .]] |
Выполняет хранимую процедуру имя- процедуры. Входные аргументы следуют за именем процедуры; возвращаемые значения следуют за ключевым словом RETURNING VALUES. Допустимы вложенные процедуры и рекурсия. Входные и выходные параметры должны быть переменными, определенными в процедуре |
Да |
Да |
EXECUTE STATEMENT <���строка> |
Выполняет оператор динамического SQL, содержащийся в <���строка> |
Да |
Нет |
EXIT |
Переходит на конечный оператор END. Необязателен |
Да |
Да |
FOR ... SELECT ... INTO ... DO |
Синтаксис составного блока цикла для обработки неявного курсора и (необязательной) генерации виртуальной таблицы для направления выхода запроса SELECT клиенту. Подробности см. в разд. "SELECT для множества строк" |
Да |
Да |
IF . . . THEN .. . [ELSE] ... |
Синтаксис составного ветвления. Подробности см. в разд. "Условные блоки" позже в этой главе |
Да |
Да |
LEAVE |
Оператор не принимает параметров. Используется для выхода из цикла. Выполнение переходит к первому оператору, следующему за концом того блока, который включает цикл, где был выполнен оператор LEAVE |
Да |
Нет |
NEW. имя-столбца |
Только триггеры. Контекстные переменные, доступные для триггеров INSERT и UPDATE. Существует одна переменная NEW для каждого столбца таблицы, содержащая новое значение, передаваемое клиентским запросом. Также доступна в некоторых ограничениях CHECK. Заметим, что в версии 1.5 в триггерах для нескольких действий ссылка на NEW. переменная не является ошибкой, поскольку она вернет NULL, если используется в контексте удаления |
Да |
Да |
OLD.имя-столбца |
Только триггеры. Контекстные переменные, доступные для триггеров INSERT и DELETE. Существует одна переменная OLD для каждого столбца таблицы, содержащая значение, которое имел столбец до выдачи клиентского запроса. Также доступна в некоторых ограничениях CHECK. Заметим, что в версии 1.5 в триггерах для нескольких действий ссылка на OLD.переменная не является ошибкой, даже если триггер включает действия по добавлению данных. Она вернет NULL, если используется в контексте добавления |
Интервал:
Закладка: