[英]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.