Здравствуйте, sax0n, Вы писали:
S>Где нужно бубном потрясти, чтобы не было такого?
Два вопроса:
1. Сколько строк в таблице table?
2. Что, все-таки возвращается — null или 0 (на всякий случай: это разные вещи).
Если строк — ни одной, а возвращается null, то это в общем-то нормальное поведение. Обычно для получения следующего значения генератора пользуются запросом к системной таблице rdb$database, в которой гарантированно хранится одна запись.
Типа такого:
select gen_id(generator_name, 1) from rdb$database;
PS Также хочу заметить, что собирать этот запрос из частей каждый раз, когда требуется следующее значение генератора — жуткий моветон, т.к. на его prepare времени, скорее всего, потратится на порядок больше, чем на исполнение и получение одного числа клиентом.