MYSQL:如何将select stmt中的列值传递给函数

时间:2017-07-19 04:13:05

标签: mysql stored-procedures

我有以下表格的程序:

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 ; 

当我打电话给这个程序时,我没有得到任何结果。怎么了?

2 个答案:

答案 0 :(得分:1)

我终于做了以下事情来获得我想要的东西:

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 ;

答案 1 :(得分:0)

你可以这样传递 -

SELECT "abc" AS column1 FROM dual;