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

Проблема запроса с параметрами FB 2.1.2

Добавлено: 02 сен 2009, 10:35
aush
Есть сервер FB 2.1.2 Win.
БД 3го диалекта. ODS11.1.
IBExpert 2009.08.11

Таблица TST

CREATE TABLE TST (
LOGT DOUBLE PRECISION,
LATT DOUBLE PRECISION
);

И запрос
select acos( sin(:latt*(pi()/180.0))*sin(r.latt*pi()/180.0)+cos(:latt*(pi()/180))*cos(r.latt*pi()/180)*cos((:logt1 - r.logt ) * pi()
/180))*6371 as dist_km
FROM tst r
Который не работает и говорит "Dynamic SQL Error. expression evaluation not supported."
Если параметры чуток обрамить мусором

select acos( sin((:latt-0)*(pi()/180.0))*sin(r.latt*pi()/180.0)+cos((:latt-0)*(pi()/180))*cos(r.latt*pi()/180)*cos((:logt1 - r.logt ) * pi()
/180))*6371 as dist_km
FROM tst r
То запрос срабатывает.
Как лечить?

Re: Проблема запроса с параметрами FB 2.1.2

Добавлено: 02 сен 2009, 14:37
Dimitry Sibiryakov
Не грузить сервер всякой математикой, а делать вычисления на клиенте.

Re: Проблема запроса с параметрами FB 2.1.2

Добавлено: 02 сен 2009, 16:44
WildSery
Почитать про особенности арифметики 3-го диалекта.
У тебя деление то нацело, то не нацело... Бардак.

Re: Проблема запроса с параметрами FB 2.1.2

Добавлено: 02 сен 2009, 17:31
aush
Это кусок более сложного запроса. До какого-то момента все работало. стоит 180 или 180.0 - роли не играет (пробовал)
Замена pi()/180.0 на 0,01745329251994 проблему тоже решает, но вот неясно почему с параметрами так. :a - не работает, :a-0 - работает.

Re: Проблема запроса с параметрами FB 2.1.2

Добавлено: 03 сен 2009, 12:26
Slavik
В своё время сталкивался с проблемами, когда параметр используется в выражениях между select и from. Мне помогло явное приведение к нужному типу: cast(:PARAM as double precision).

Re: Проблема запроса с параметрами FB 2.1.2

Добавлено: 03 сен 2009, 15:48
aush
Спасибо. С явным приведением заработало.