【发布时间】:2018-05-16 12:21:11
【问题描述】:
我正在尝试创建一个接受邮政编码的函数,调用 google api 然后对其进行解析并返回一个 sdo_geometry(经度和纬度),但是我无法让这个函数工作并且不确定我要去哪里错了,自发布以来我确实犯了一个错误,但更正了我仍然得到一个解析错误。
对其他方法的任何帮助或建议将非常有用。也不知道为什么我投了反对票,但我希望我能
CREATE OR REPLACE FUNCTION google_geocode( p_postcode varchar2 )
RETURN sdo_geometry IS
l_http_req utl_http.req;
l_http_response UTL_HTTP.resp;
l_lat long;
l_long long;
BEGIN
l_http_req := utl_http.begin_request(
url => 'https://maps.googleapis.com/maps/api/geocode/json?address=' || utl_url.escape(p_postcode));
l_http_response := UTL_HTTP.get_response(l_http_req);
apex_json.parse (l_http_response);
--DBMS_OUTPUT.PUT_LINE(apex_json.get_number('results.location.lat'));
--DBMS_OUTPUT.PUT_LINE(apex_json.get_number('results.location.lng'));
l_lat := apex_json.get_number('results.location.lat');
l_long := apex_json.get_number('results.location.lng');
RETURN sdo_geometry
(
2001,
4326,
sdo_point_type(
TO_NUMBER(l_lat),
TO_NUMBER(l_long),
null),
null,
null);
END google_geocode;
【问题讨论】:
标签: sql json function plsql google-api