Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
google maps api的PL/SQL函数Json解析错误_Sql_Json_Function_Plsql_Google Api - Fatal编程技术网

google maps api的PL/SQL函数Json解析错误

google maps api的PL/SQL函数Json解析错误,sql,json,function,plsql,google-api,Sql,Json,Function,Plsql,Google Api,我正在尝试创建一个函数,该函数接受邮政编码,调用google api,然后对其进行解析,并返回sdo_几何体(经度和纬度),无论我如何无法使该函数工作,也不确定我在哪里出错,我在发布后确实犯了一个错误,但更正后我仍然得到一个解析错误 对其他方法的任何帮助或建议都将非常有用。我也不知道为什么我会被否决,但我希望我能 CREATE OR REPLACE FUNCTION google_geocode( p_postcode varchar2 ) RETURN sdo_geometry IS l_

我正在尝试创建一个函数,该函数接受邮政编码,调用google api,然后对其进行解析,并返回sdo_几何体(经度和纬度),无论我如何无法使该函数工作,也不确定我在哪里出错,我在发布后确实犯了一个错误,但更正后我仍然得到一个解析错误

对其他方法的任何帮助或建议都将非常有用。我也不知道为什么我会被否决,但我希望我能

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;

我得到的错误是,我修复了前两个,但仍然得到解析错误

您需要更改变量名:

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_request);  
                                         -- should be l_http_req

您得到的错误是,没有与您试图传递的参数匹配的
apex_json.parse
定义

如果查看,您将看到有四个签名用于
parse

APEX_JSON.PARSE (
    p_values   in out nocopy t_values,
    p_source   in varchar2,
    p_strict   in boolean default true );

APEX_JSON.PARSE (
    p_values   in out nocopy t_values,
    p_source   in clob,
    p_strict   in boolean default true );

APEX_JSON.PARSE (
    p_source   IN VARCHAR2,
    p_strict   IN BOOLEAN DEFAULT TRUE );

APEX_JSON.PARSE (
    p_source   IN CLOB,
    p_strict   IN BOOLEAN DEFAULT TRUE );
目前您正在提供一个
utl_http.resp
,但不支持这种调用


您需要将
utl\u http.resp
对象中的数据读取到
CLOB
中,然后将其传递到
parse
过程。

您好,我想您还没有进一步的了解,我还需要在这方面取得进展