У меня есть проблема (тема) с запросом SQL (с Firebird). Я использую PHP и PDO, но я не знаю, почему он не работает.
Я объясняю :
У меня есть этот запрос, работающий на FlameRobin, но не в PHP / PDO:
WITH MESCOORDONNEES AS (
SELECT COS(cast(3.14159265358979 as numeric(15,14))*'.$longitude.'/180) as LNG_COS,
SIN(cast(3.14159265358979 as numeric(15,14))*'.$longitude.'/180) as LNG_SIN,
COS(cast(3.14159265358979 as numeric(15,14))*'.$latitude.'/180) as LAT_COS,
SIN(cast(3.14159265358979 as numeric(15,14))*'.$latitude.'/180) as LAT_SIN
FROM RDB$DATABASE
)
SELECT (6371*ACOS(LAT_COS*COS(cast(3.14159265358979 as numeric(15,14))*C_LATITUDE/180)*LNG_COS*COS(cast(3.14159265358979 as numeric(15,14))*C_LONGITUDE/180)+LAT_COS*LNG_SIN*COS(cast(3.14159265358979 as numeric(15,14))*C_LATITUDE/180)*SIN(cast(3.14159265358979 as numeric(15,14))*C_LONGITUDE/180)+LAT_SIN*SIN(cast(3.14159265358979 as numeric(15,14))*C_LATITUDE/180))) as DISTANCE,
(c.C_FAMILLECONTACT||ascii_char(10)||ascii_char(13)||c.C_NOM) as C_NOM, c.*
FROM CONTACTFICHE c, MESCOORDONNEES
WHERE (C_LATITUDE is not null AND C_LATITUDE <> 0)
AND (C_LONGITUDE is not null AND C_LONGITUDE <> 0)
AND (6371*ACOS(LAT_COS*COS(cast(3.14159265358979 as numeric(15,14))*C_LATITUDE/180)*LNG_COS*COS(cast(3.14159265358979 as numeric(15,14))*C_LONGITUDE/180)+LAT_COS*LNG_SIN*COS(cast(3.14159265358979 as numeric(15,14))*C_LATITUDE/180)*SIN(cast(3.14159265358979 as numeric(15,14))*C_LONGITUDE/180)+LAT_SIN*SIN(cast(3.14159265358979 as numeric(15,14))*C_LATITUDE/180))) <= 20
Я попытался привести значение pi, потому что у меня было целочисленное переполнение.
Теперь у меня есть эта ошибка:
General error: -817
Dynamic SQL Error
SQL error code = -817
Metadata update statement is not allowed by the current database SQL dialect 1
если кто-то может объяснить мне, где проблема и почему.
Задача ещё не решена.
Других решений пока нет …