Главная ]
2.4.Дескрипторы транзакций
Программирование
Базы данных



 

InterBase требует чтобы все дескрипторы транзакций были объявлены в откомпилированном приложении. После компиляции, дескрипторы транзакции не могут быть изменены во время выполнения, и при этом новые дескрипторы не могут быть объявлены динамически во время выполнения. Большинство функций API, которые обрабатывают инструкции SQL во время выполнения, типа isc_dsql_describe (), isc_dsql_describe_bind (), isc_dsql_execute (), isc_dsql_execute2 (), isc_dsql_execute_immediate (), isc_dsql_exec_immed2 (), и isc_dsql_prepare (), поддерживает включение параметра дескриптора транзакции. Инструкции SQL, обработанные этими функциями не могут передавать дескрипторы транзакции, даже если синтаксис SQL для инструкции разрешает использование предложения TRANSACTION.

Прежде, чем  дескриптор транзакции будет использоваться, он должен быть объявлен и инициализирован в 0. Следующий код объявляет, инициализирует, и использует дескриптор транзакции в  API вызове , который размещает и готовит инструкцию SQL для выполнения:

#include <ibase.h>

. . .

isc_tr_handle trans; /* Обьявляется дескриптор транзакции. */

isc_stmt_handle stmt; /* Обьявляется дескриптор инструкции. */

char *sql_stmt = "SELECT * FROM EMPLOYEE";

isc_db_handle db1;

ISC_STATUS status_vector[20];

. . .

trans = 0L; /* Дескриптор транзакции инициализируется в 0. */

stmt = NULL; /* Дескриптор инструкции устанавливается в NULL перед выделенем. */

/* Здесь код для подключения, к БД и старта транзакции */

. . .

/* Выделяем место для дескриптора инструкции. */

isc_dsql_allocate_statement(status_vector, &db1, &stmt);

/* Подготавливаем инструкцию для выполнения. */

isc_dsql_prepare(status_vector, &trans, &stmt, 0, sql_stmt, 1, NULL);

Примечание: Инструкция SQL SET TRANSACTION не может быть подготовлена через isc_dsql_prepare (), но она может быть обработана с помощью isc_dsql_execute_immediate () если:

  1. Предыдущие транзакции закончились подтверждением  или откачены назад.

  2. Дескриптор транзакции установлен в NULL.

 

<< Назад ] Содержание ] Далее >> ]

 

Дизайн: Piton Alien
Rambler's Top100 Рейтинг@Mail.ru
Сайт создан в системе uCoz