"Oleg Matveyev" ... > > > > isc_start_transaction > > > > > > isc_dsql_allocate_statement > > > isc_dsql_prepare > > > isc_dsql_execute > > > (isc_dsql_fetch) > > > > > > isc_commit_transaction - вот на данном этапе, сервер нормально > > > переживет? > > > > А почему нет? Время жизни стейтмента по определению больше, чем > транзакции. > > Так, тогда значит это правильный порядок? > а что мешает мне открыть бааальшую транзакцию...: > > isc_start_transaction > > for(;;) > { > isc_dsql_allocate_statement > isc_dsql_prepare > isc_dsql_execute > (isc_dsql_fetch) > isc_dsql_free_statement > } > > isc_commit_transaction > > тоже вроде все верно, хотя, конечно - неоптимально.
Не забывай о том, что у isc_dsql_free_statement есть ещё один параметр. Оптимально, в данном случае, будет так : isc_start_transaction isc_dsql_allocate_statement isc_dsql_prepare // если текст запроса в цикле не меняется for(;;) { // isc_dsql_prepare // если текст запроса в цикле меняется isc_dsql_execute (isc_dsql_fetch) isc_dsql_free_statement // DSQL_close } isc_dsql_free_statement // DSQL_drop isc_commit_transaction -- Хорсун Влад