2016-10-20 13 views
0

Ich versuche gerade, eine Abfrage zu erstellen, die die Entfernungen zwischen zwei Punkten mit gegebenen Lat/Long-Werten berechnet. Ich habe bis jetzt eine Abfrage erstellt, aber bin auf einige Fehler gestoßen und nicht sicher, dass ich auf dem richtigen Weg bin! Jede Anleitung oder Beratung wäre willkommen. Ich bin neu in Orakel.Abfrage von Entfernungen mit euklidischer Distanzmessung

-Code bisher:

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; 
/

Jede Hilfe sehr geschätzt würde !!

+2

Bitte bearbeiten Sie Ihre Frage und liefern Sie Beispieldaten und gewünschte Ergebnisse. –

+0

Wo sind die Fehler? – Thomas

Antwort

0

Sie verwenden eine einfache SQL-Anweisung in Ihrem anonymen Block. Sie müssen eine Variable verwenden, um den von der Abfrage zurückgegebenen Wert zu erhalten.
Power-Funktion fehlt für die Berechnung für die Länge.
Auch Semikolon ';' fehlt am Ende der Abfrage.

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; 
/
+0

Ich denke, Sie müssen die Ausnahmebehandlung 'too_many_rows' hinzufügen – AlexSmet

Verwandte Themen