Проблема с execute statement в FB 1.5.1
Проблема с execute statement в FB 1.5.1
В ХП выполняется запрос
select client, sum(kolich), count(*)
from tablename
where date1='03.10.2004'
group by 1';
выполняется без проблем. Но когда тот же запрос я вставляю в переменную и выполняю через execute statement выдается ошибка, что какое-то значение должно быть 0 - 32767. При удалении count(*) ошибка исчезает. В чем может быть дело ?
Спасибо.
select client, sum(kolich), count(*)
from tablename
where date1='03.10.2004'
group by 1';
выполняется без проблем. Но когда тот же запрос я вставляю в переменную и выполняю через execute statement выдается ошибка, что какое-то значение должно быть 0 - 32767. При удалении count(*) ошибка исчезает. В чем может быть дело ?
Спасибо.
Сообщение такое
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
numeric value between 0 and 32767 inclusive required.
Все поля таблиц и параметры ХП используемые в этом запросе у меня bigint. Так, что никакого переполнения быть не должно.
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
numeric value between 0 and 32767 inclusive required.
Все поля таблиц и параметры ХП используемые в этом запросе у меня bigint. Так, что никакого переполнения быть не должно.
Совсем тоска
Упростил запрос до предела
begin
txt_sql = 'select count(*) from table_try';
for execute statement main_sql
into :kolichstvo do
begin
suspend;
end
Выдает ошибку. Если вместо count(*) подставить что -то другое : sum(), avg(), просто поле, то работает нормально.
begin
txt_sql = 'select count(*) from table_try';
for execute statement main_sql
into :kolichstvo do
begin
suspend;
end
Выдает ошибку. Если вместо count(*) подставить что -то другое : sum(), avg(), просто поле, то работает нормально.
заработало
Если кому еще интересно : выходной параметр в который выталкивалось поле count(*) был bigint. сделал его int и все заработало. Хотя конечно интересно почему так не адекватно реагировал только count(). Может разработчикам наябедничать ?
Читаем RelNotes, стр. 22:a3a3ello писал(а):Вставляю client в varchar, sum и count в bigint. Да вопрос по моему не в этом ведь точно такой же запрос без execute statement с теми же переменными работает и без count работает !
4. Return values are strictly checked for data type in order to avoid unpredictable type-casting exceptions.
Проверяем, какой тип данных возвращает count. Оказывается, что INT. А пихаем его в BIGINT. Перечитываем вышеприведенный абзац еще раз. Думаем. Меняем переменную на INT. Радуемся жизни.