2017-07-19 13 views
-1

に選択のstmt内の列の値を渡すために: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

おそらく、where条件に一致するレコードは1つもありません。なぜこの質問に基づいて言えるのかわからない。 – Shadow

+0

latとlonは緯度と経度であり、変更を行うためにdbスキーマにアクセスすることはできません。 – 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; 
関連する問題