我目前正在尝试创建一个查询,该查询将使用给定的纬度/经度值计算两点之间的距离。到目前为止我构建了一个查询,但遇到了几个错误,并且不确定我是否在正确的道路上!任何指导或建议将不胜感激。我是oracle的新手。
到目前为止代码:
DECLARE
lat NUMBER := -12;
lon NUMBER := 130;
BEGIN
SELECT x_id
FROM x
WHERE x_id = sqrt(power(lat - latitude, 2) + (lon - longitude, 2))
END;
/
任何帮助都将非常感谢!!
答案 0 :(得分:0)
您在匿名块中使用简单的SQL语句。您需要使用变量来接收查询返回的值 经度计算缺少功率函数 分号';'在查询结束时丢失。
SET SERVEROUTPUT ON
DECLARE
lat NUMBER := -12;
lon NUMBER := 130;
lv_id NUMBER;
BEGIN
SELECT x_id INTO lv_id
FROM x
WHERE x_id = sqrt(power(lat - latitude, 2) + power(lon - longitude, 2));
dbms_output.put_line('ID : '||lv_id);
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('ID Not Found');
WHEN too_many_rows THEN
dbms_output.put_line('More than one ID Not Found');
END;
/