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