Страница 1 из 1

Не могу вернуть значение типа BIGINT в FireBird

Добавлено: 31 авг 2007, 12:04
Vicc
Доброе время суток!

Использую FireBird 2.0.2.12964

Проблема следующая:
Есть хранимая процедура, которая должна возвращать значение типа BIGINT. При попытке подготовиться к его получению через API (isc_dsql_prepare) возникает ошибка "Dinamic SQL error", причём неважно, какой целочисленный тип данных я указал в запросе (в т.ч. SQL_INT64)..
Если же поменять в функции тип возвращаемого значения на INTEGER, ошибки не возникает, всё отрабатывается как надо (опять же, независимо от типа данных в запросе).

Собсно, вопрос: это я что-то забыл сделать или это баг в БД?

Добавлено: 31 авг 2007, 13:24
Dimitry Sibiryakov
Это ты что-то забыл сделать. Например, использовал первый диалект, который int64 не держит. Или не проинициализировал/задал неправильное значение что-нибудь в XSQLDA.

Добавлено: 31 авг 2007, 14:24
Vicc
Диалект у базы третий. При вызове процедуры руками из IBExpert всё работает правильно.
Остаётся только найти, в чём разница между подготовкой XSQLDA к чтению данных типа "SQL_LONG" и "SQL_INT64". Читал доку на IBase, ответа пока не нашёл. В FireBird`овских примерах тоже ничего...

Добавлено: 03 сен 2007, 08:16
Dimitry Sibiryakov
Vicc писал(а):Диалект у базы третий.
Диалект базы можешь оставить в покое. Диалект для конкретного запроса указывается при prepare (и прочих вызовах).
В-общем, или ты показываешь код или живи как хочешь. Телепатор сломался.

Добавлено: 03 сен 2007, 13:48
Vicc
Диалект для конкретного запроса указывается при prepare (и прочих вызовах).
Спасибо, полегчало. :) Действительно, был указан 1-й диалект (пример взят с минимальными переделками).