如何在Oracle11g中从JSON读取数据

如何在Oracle11g中从JSON读取数据,json,plsql,oracle11g,Json,Plsql,Oracle11g,亲爱的各位,为了获得json中的API响应,我编写了以下代码,该代码运行良好,现在返回json,我想读取json输出并显示在Oracle 11g表单上,有人能帮忙吗 DECLARE req UTL_HTTP.REQ; resp UTL_HTTP.RESP; content VARCHAR2(4000); buffer VARCHAR2(4000); BEGIN req := UTL_HTTP.BEGIN_REQUEST ( url

亲爱的各位,为了获得json中的API响应,我编写了以下代码,该代码运行良好,现在返回json,我想读取json输出并显示在Oracle 11g表单上,有人能帮忙吗

DECLARE
  req     UTL_HTTP.REQ;
  resp    UTL_HTTP.RESP;
  content VARCHAR2(4000);
  buffer  VARCHAR2(4000);
BEGIN        
  req := UTL_HTTP.BEGIN_REQUEST (
    url    => 'http://demo-piaic-server.herokuapp.com/api/v1/findVoucher',
    method => 'POST'
  );

  content := '{'
    || '"fee_voucher_no":"' || 329 || '",' -- remember to escape special characters  
    || '"apikey":"' ||'zKoJSEVJdrld0g59pqpCOveBOBf46iYOHYbOOdUX'|| '"'
    || '}';

  UTL_HTTP.SET_HEADER( req, 'content-type', 'application/json' ); 
  UTL_HTTP.SET_HEADER( req, 'Content-Length', length(content) );
  UTL_HTTP.WRITE_TEXT( r => req, data => content );
  resp := UTL_HTTP.GET_RESPONSE(req);

  BEGIN
    LOOP
      UTL_HTTP.READ_LINE( resp, buffer, TRUE );
      DBMS_OUTPUT.PUT_LINE( buffer );
    END LOOP;
    UTL_HTTP.END_RESPONSE(resp);
   EXCEPTION
    WHEN UTL_HTTP.END_OF_BODY THEN
      UTL_HTTP.END_RESPONSE(resp);
  END;
END;
输出

{"statusCode":"001","success":true,"rollNo":"PIAIC40","quarter":"Q1","fee_voucher_no":329,"fullName":"Akmal Elahi Shaikh"}

您可能希望将响应放在一个带有JSON约束列的表中,如果您想提取JSON有效负载的各个元素,可以从那里查询。@acroyear非常确定JSON约束列直到12c才引入,标签上说11gGood point@ShaunPetersonI以前在使用11g时使用pljson解析JSON。也许值得在github上查看一下,看看它是否适合您:如果APEX适合您,您也可以尝试它:您可能希望将响应放在一个带有JSON约束列的表中,如果您想提取JSON有效负载的各个元素,可以从那里查询。@acroyear非常确定JSON约束列直到12c才引入,标签上说11gGood point@ShaunPetersonI以前在使用11g时使用pljson解析JSON。也许值得在github上查看一下,看看它是否适合您:如果APEX适合您,您也可以尝试: