我的 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
如果有人可以向我解释问题出在哪里以及为什么。