给定纬度、经度和半径,找到该地区的所有联系人。但是 table 仅包含纬度和经度列

Given a latitude ,longitude and radius, find all contacts in that region. But the table contains only latitud nad longitude columns

解决方案可以找到最小和最大纬度和经度。 然后在 select 查询中使用 between 条件来获取结果。 但是我如何获得 pl/sql.

中的最大和最小纬度和经度

我认为您没有 plsql 问题,您需要一个公式。这里有一些 plsql 代码计算勾股定理 (https://en.wikipedia.org/wiki/Pythagorean_theorem):

declare
    v_yourX NUMBER := 0;
    v_yourY NUMBER := 0;

    v_anotherX NUMBER := 0;
    v_anotherY NUMBER := 1;

    v_diffX NUMBER;
    v_diffY NUMBER;

    v_distance NUMBER;
begin
    v_diffX := v_yourX - v_anotherX;
    v_diffY := v_yourY - v_anotherY;

    v_distance := sqrt(v_diffX*v_diffX + v_diffY*v_diffY);

    dbms_output.put_line('Distance: ' || v_distance); 
end;

您想 select 从数据库中提取一些东西。下面是一个如何使用单个查询完成此操作的示例:

SELECT t.*, sqrt(t.posX*t.posX + t.posY+posY) as distance FROM
(
    select (0 - :yourX) posX, (0 - :yourY) posY from dual UNION ALL -- fake-table
    select (1 - :yourX) posX, (2 - :yourY) posY from dual UNION ALL
    select (2 - :yourX) posX, (10 - :yourY) posY from dual
) t
WHERE sqrt(t.posX*t.posX + t.posY+posY) < :maxDistance