我有一个存储过程,我从PHP传递3个参数(变量)。我已经验证了PHP代码正在获取并正确设置值,因此我专门使用在执行之前设置的参数。下面是我的存储过程代码。
问题是我试图将第3个Select语句的结果填充到table_in
参数定义的表中,但返回0结果。我曾尝试一次将一个语句拼凑在一起,但遇到了lat,lng语句的问题。
如何正确修复此问题,以便接受参数输入并正确使用这些值并从存储过程中调用的已定义函数中插入适当的输出?
CREATE PROCEDURE `sp_store_code_ms1`(IN `store_code_in` VARCHAR(10), IN `table_in` VARCHAR(20), IN `range_in` INT(2))
BEGIN
DECLARE cnt INT DEFAULT 0;
DECLARE lat DOUBLE DEFAULT 0;
DECLARE lng DOUBLE DEFAULT 0;
SELECT DISTINCT code
FROM `postal_code` AS `cnt`
WHERE code = ('store_code_in')
LIMIT 1;
IF (`cnt` > 0) THEN
SELECT DISTINCT store_code AS `cnt2`
FROM `table_in`
WHERE STORE_CODE = `store_code_in`
LIMIT 1;
IF (`cnt2` < 1) THEN
SELECT latitude, longitude INTO lat, lng
FROM `postal_code`
WHERE code = ('AB101AB');
INSERT INTO `table_in` (`store_code`, `search_code`, `distance`)
SELECT ('store_code_in'), code
, fn_haversine(`lat`, `lng`, latitude, longitude) AS `distance`
FROM `postal_code`
HAVING `distance` < `range_in`;
END IF;
END IF;
END