2017-07-19 44 views
-1

我有以下形式的方法:MYSQL:如何选择语句列值传递到功能

DELIMITER // 
create procedure cl.getcoords(lat FLOAT(15,12), lon FLOAT(15,12), distance int) 
    BEGIN 


    declare tlat FLOAT(15,12); 
    declare tlon FLOAT(15,12); 
    declare tcoslat FLOAT(20,16); 
    SELECT lat, lon, cos_lat into tlat, tlon, tcoslat FROM cl.mrkrs WHERE cl.getcoordsdistance(lat, lon, tlat, tlon, tcoslat, distance) IS TRUE LIMIT 100; 
    END // 
DELIMITER ; 

我没有得到任何结果,当我把这个过程。什么做错了?

+0

哪些数据是参与?为什么这是一个存储过程?你有没有看过[MySQL Spatial Extensions](https://dev.mysql.com/doc/refman/5.7/en/spatial-extensions.html)? – tadman

+0

可能没有一个记录匹配哪个标准。我们无法根据问题说明原因。 – Shadow

+0

纬度和经度都是纬度和经度,我无法访问数据库模式以进行任何更改。 – BoCode

回答

0

我终于做了以下得到什么我一直在寻找:

DELIMITER $$ 
CREATE DEFINER=`root`@`localhost` PROCEDURE `getcoords`(lat FLOAT(15,12), lon FLOAT(15,12), distance int) 
BEGIN 


-- declare tlat FLOAT(15,12); 
-- declare tlon FLOAT(15,12); 
-- declare tcoslat FLOAT(20,16); 
    SET @s = CONCAT('SELECT lat , lon , cos_lat FROM cl.mrkrs WHERE cl.getcoordsdistance(',lat,',' ,lon,', lat, lon, cos_lat,',distance,') IS TRUE LIMIT 100'); 
    prepare stmt1 from @s; 
    execute stmt1; 
    deallocate prepare stmt1; 

    END$$ 
DELIMITER ; 
0

你可以通过这样的 -

SELECT "abc" AS column1 FROM dual;