簡體   English   中英

MySQL位置選擇查詢在存儲過程中返回0

[英]MySQL location select query returns 0 in stored procedure

有人可以在這里發現問題嗎? 我有一個存儲過程,想用來查找最接近特定位置的位置。

當我嘗試在存儲的proc之外進行選擇時(僅在查詢窗口中),一切都很好。

SELECT  id, 
        ( 3959*acos( 
            cos(radians(37)) *
            cos(radians(lat)) *
            cos(radians(lng) - radians(-122)) + 
            sin(radians(37)) * 
            sin(radians(lat)) 
            ) 
        ) AS distance 
FROM markers 
HAVING distance < 25 
ORDER BY distance 
LIMIT 0 , 20;

但是,當我將其放置在存儲過程中時,它總是返回0。

DELIMITER $$

CREATE PROCEDURE `GetLocationsByRadius`(IN latitude double, IN longitude double,IN  radius double)
begin

  SELECT  ( 6371 * acos( cos( radians(latitude) ) * cos( radians( Latitude ) ) * cos( radians( Longitude ) - radians(longitude ) ) + sin( radians(latitude) ) * sin( radians( Latitude ) ) ) ) AS distance FROM LocationTrades HAVING distance < radius ORDER BY distance LIMIT 0 , 20;


end $$

我嘗試將表數據類型從float4更改為float8到小數,我嘗試在存儲的內部使用內部變量,但無濟於事,它始終返回距離0。似乎它認為其中的內容為INT ...

任何幫助,將不勝感激。

謝謝

好的,我發現了問題。

表格列之前需要表格標識符。 (TABLE.COLUMN)

這有效:

分隔符$$

創建過程GetLocationsByRadius (緯度加倍,經度加倍,半徑加倍)開始

SELECT(6371 * acos(cos(弧度(緯度))* cos(弧度(Locations.Latitude))* cos(radians(Locations.Longitude)-radians(longitude))+ sin(radians(latitude))* sin(radians (Locations.Latitude))))到位置的AS距離HAVING距離<半徑ORDER BY距離LIMIT 0,20;

結束$$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM