Есть сервер 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
То запрос срабатывает.
Как лечить?
Проблема запроса с параметрами FB 2.1.2
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: Проблема запроса с параметрами FB 2.1.2
Не грузить сервер всякой математикой, а делать вычисления на клиенте.
Re: Проблема запроса с параметрами FB 2.1.2
Почитать про особенности арифметики 3-го диалекта.
У тебя деление то нацело, то не нацело... Бардак.
У тебя деление то нацело, то не нацело... Бардак.
Re: Проблема запроса с параметрами FB 2.1.2
Это кусок более сложного запроса. До какого-то момента все работало. стоит 180 или 180.0 - роли не играет (пробовал)
Замена pi()/180.0 на 0,01745329251994 проблему тоже решает, но вот неясно почему с параметрами так. :a - не работает, :a-0 - работает.
Замена pi()/180.0 на 0,01745329251994 проблему тоже решает, но вот неясно почему с параметрами так. :a - не работает, :a-0 - работает.
Re: Проблема запроса с параметрами FB 2.1.2
В своё время сталкивался с проблемами, когда параметр используется в выражениях между select и from. Мне помогло явное приведение к нужному типу: cast(:PARAM as double precision).
Re: Проблема запроса с параметрами FB 2.1.2
Спасибо. С явным приведением заработало.