Stored procedures 如何从joomla中的过程调用获取

Stored procedures 如何从joomla中的过程调用获取,stored-procedures,joomla,Stored Procedures,Joomla,我在乔姆拉工作。我在mySql表中有大量的数据。我需要用所有这些数据计算这个项目。由于每次计算的结果都会有所不同,所以我使用MySql过程来执行计算 在这个过程中,我首先进行计算,然后将数据插入一个临时表(tmp_zipcode),然后获取它。一切正常。但我需要计算后直接取。我不想将数据插入临时表,然后每次都提取它 下面是mySql中的一个过程调用。然而,我认为,您不需要通过下面的整个过程代码来回答这个问题 DELIMITER $$ DROP FUNCTION IF EXISTS `G

我在乔姆拉工作。我在mySql表中有大量的数据。我需要用所有这些数据计算这个项目。由于每次计算的结果都会有所不同,所以我使用MySql过程来执行计算

在这个过程中,我首先进行计算,然后将数据插入一个临时表(tmp_zipcode),然后获取它。一切正常。但我需要计算后直接取。我不想将数据插入临时表,然后每次都提取它

下面是mySql中的一个过程调用。然而,我认为,您不需要通过下面的整个过程代码来回答这个问题

DELIMITER $$ 

DROP   FUNCTION  IF EXISTS `GetDistance`$$ 

CREATE   FUNCTION  `GetDistance`( 
 lat1  numeric (9,6), 
 lon1  numeric (9,6), 
 lat2  numeric (9,6), 
 lon2  numeric (9,6) 
)  RETURNS   decimal (10,5) 
BEGIN 
  DECLARE  x  decimal (20,10); 
  DECLARE  pi  decimal (21,20); 
  SET  pi = 3.14159265358979323846; 
  SET  x = sin( lat1 * pi/180 ) * sin( lat2 * pi/180  ) + cos( 
 lat1 *pi/180 ) * cos( lat2 * pi/180 ) * cos(  abs ( (lon2 * pi/180) - 
 (lon1 *pi/180) ) ); 
  SET  x = atan( ( sqrt( 1- power( x, 2 ) ) ) / x ); 
  RETURN  ( 1.852 * 60.0 * ((x/pi)*180) ) / 1.609344; 
END $$ 

DELIMITER ;

DELIMITER $$ 

DROP   PROCEDURE  IF EXISTS `GetNearbyZipCodes`$$ 

CREATE   PROCEDURE  `GetNearbyZipCodes`( 
    zipbase  varchar (6), 
    rang  numeric (15) 
) 
BEGIN 
DECLARE  lat1  decimal (5,2); 
DECLARE  long1  decimal (5,2); 
DECLARE  rangeFactor  decimal (7,6); 
SET  rangeFactor = 0.014457; 
SELECT  Latitude,Longitude  into  lat1,long1  FROM   ZIPCodes  WHERE  ZipCode = zipbase; 
Insert into tmp_zipcode(zipcode,radius) SELECT B.ZipCode,GetDistance(lat1,long1,B.Latitude,B.Longitude) FROM  ZIPCodes  AS  B WHERE B.Latitude  BETWEEN  lat1-(rang*rangeFactor) AND lat1+(rang*rangeFactor) AND  B.Longitude  BETWEEN  long1-(rang*rangeFactor)  AND  long1+(rang*rangeFactor) AND  GetDistance(lat1,long1,B.Latitude,B.Longitude) <= rang; 
END $$ 

DELIMITER ;

因此,我需要直接获取计算部分,而无需插入到或从临时表获取。我根本不想使用临时表。如何从joomla中的MySql过程中获取数据

调用该过程时出现的错误到底是什么?首先,您应该停止使用诸如query()等不推荐使用的方法,并尝试更多地使用API,这将非常有帮助。为什么要用临时表作为开始?美元是多少?为什么不在存储过程中加载select的结果,而不执行两步操作?
$truncate="truncate table tmp_zipcode";
$db->setquery($truncate);
$db->query();

$test="CALL GetNearbyZipCodes( $zipcode ,$miles)";
$db->setquery($test);
$re=$db->query();
$result_codes_query="select zipcode,radius from tmp_zipcode";
$db->setquery($result_codes_query);
$db->query();
$codes=$db->loadAssocList();