1

我的 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

如果有人可以向我解释问题出在哪里以及为什么。

4

0 回答 0