Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с execute statement в FB 1.5.1 [FB 1.5.1]


a3a3ello ©   (2004-11-25 17:01:00) 

В ХП FB 1.5.1 глючит следующий фрагмент.

begin
txt_sql = 'select count(*) from table_try';
for execute statement main_sql
into :kolichstvo do
begin
suspend;
end

Выдается ошибка

Eсли сделать то же самое без execute statement то процедура работает. Если в переменной txt_sql заменить count(*) на что нибудь другое(sum(), avg(), просто поле) , то тоже все работает.
Что это можт быть ?
Спасибо


a3a3ello   (2004-11-25 18:15:00) [1]

Уррррррра.
Сделал int и заработало. Интересно это глюк или фича. И почему все кроме count() с bigint-ом работало.
Всем спасибо.


a3a3ello   (2004-11-25 18:05:00) [2]

2stud
параметр kolichstvo - bigint
переменная txt_sql varchar(500)


Johnmen   (2004-11-25 18:03:00) [3]

>a3a3ello   (25.11.04 17:50) [5]

Это из-за того, что вых.парам у тебя bigint.
Сделай int и не мучайся...:)


stud   (2004-11-25 17:58:00) [4]

tn - varchar имя таблицы
cc - integer


stud   (2004-11-25 17:55:00) [5]

сервер 1,5
for execute statement 'SELECT count(*)  FROM ' ||tn
 into :cc
 do suspend;

специально проверил - эта конструкция работает.
а какой тип параметров?


a3a3ello   (2004-11-25 17:50:00) [6]

* заменял на все, что мог.
2stud Приятно, что у кого-то это работает, значит шансы есть. А какая у тебя версия сервера?

Вот текст ошибки. Может поможет
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
numeric value between 0 and 32767 inclusive required.


stud   (2004-11-25 17:42:00) [7]

вот реально работающий пример
for execute statement 'SELECT trandate,count(*)  FROM ' ||tn||
 ' WHERE  trantime<'||'''15:00'''||
 ' group by trandate order by trandate' into :trandate_,:do15


Johnmen   (2004-11-25 17:35:00) [8]

А замени * на имя поля, которое PK.


a3a3ello   (2004-11-25 17:27:00) [9]

я извиняюсь main_sql и txt_sql одно и то же. Замучился уже :(
kolichstvo переменная типа bigint.

begin
txt_sql = 'select count(*) from table_try';
for execute statement txt_sql
into :kolichstvo do
begin
suspend;
end


stud   (2004-11-25 17:18:00) [10]


> main_sql

это что? имя таблицы или?


Наверх

Титульная страница Поиск, карта сайта Написать письмо