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

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
aush
Сообщения: 3
Зарегистрирован: 02 сен 2009, 10:26

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

Сообщение aush » 02 сен 2009, 10:35

Есть сервер 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
То запрос срабатывает.
Как лечить?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

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

Сообщение Dimitry Sibiryakov » 02 сен 2009, 14:37

Не грузить сервер всякой математикой, а делать вычисления на клиенте.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

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

Сообщение WildSery » 02 сен 2009, 16:44

Почитать про особенности арифметики 3-го диалекта.
У тебя деление то нацело, то не нацело... Бардак.

aush
Сообщения: 3
Зарегистрирован: 02 сен 2009, 10:26

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

Сообщение aush » 02 сен 2009, 17:31

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

Slavik
Сообщения: 115
Зарегистрирован: 17 янв 2007, 11:52

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

Сообщение Slavik » 03 сен 2009, 12:26

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

aush
Сообщения: 3
Зарегистрирован: 02 сен 2009, 10:26

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

Сообщение aush » 03 сен 2009, 15:48

Спасибо. С явным приведением заработало.

Ответить