웹 서비스에서 JSON 응답을 받고 있습니다. JSON 데이터를 PL/SQL 변수로 추출하려고합니다. 수있는 방법을 설명해 주실 수 있습니까?CLOB JSON 데이터를 Oracle의 지역 변수로 추출
미리 감사드립니다.
웹 서비스에서 JSON 응답을 받고 있습니다. JSON 데이터를 PL/SQL 변수로 추출하려고합니다. 수있는 방법을 설명해 주실 수 있습니까?CLOB JSON 데이터를 Oracle의 지역 변수로 추출
미리 감사드립니다.
아래의 솔루션을 구현했습니다. 타사 도구/라이브러리를 사용하지 않고 12c 버전의 데이터베이스에서 작동했습니다.
https://docs.oracle.com/database/122/ADJSN/json-in-oracle-database.htm#ADXDB6371
는 생산의 변화 : 오라클의
Alex Poole이 주석에서 언급했듯이 Oracle 12c을 사용하는 경우 JSON 작성 및 읽기를 지원하는 다양한 기능을 사용할 수 있습니다. 이전 버전에서 실행 중이며 Oracle APEX 5.0 이상이 설치되어있는 경우 (그렇지 않은 경우 무료로 설치할 수 있음) 풍부한 APEX_JSON 패키지와 유사한 기능을 제공하는 패키지를 활용할 수 있습니다.
그러나 두 옵션을 모두 사용할 수없는 경우 PL/SQL 패키지 패키지를 사용할 수 있습니다. 다음은 설치 한 후 사용 방법을 보여주는 간단한 스 니펫입니다.
DECLARE
l_param_list VARCHAR2(512);
l_http_request UTL_HTTP.req;
l_http_response UTL_HTTP.resp;
l_response_text VARCHAR2(32767);
l_list json_list; --json array type
A_id VARCHAR2(200);
UserId VARCHAR2(100);
UserName VARCHAR2(100);
OutletCode VARCHAR2(100);
OutletName VARCHAR2(100);
MobileNumber VARCHAR2(100);
PhoneNumber VARCHAR2(100);
Address VARCHAR2(100);
City VARCHAR2(100);
State VARCHAR2(100);
Postcode VARCHAR2(100);
Email VARCHAR2(100);
UpdateCount VARCHAR2(100);
loginCount VARCHAR2(100);
ReferencePhoto VARCHAR2(100);
Updates VARCHAR2(100);
AccountLocked VARCHAR2(100);
Oracle_Flag VARCHAR2(100);
acl VARCHAR2(100);
BEGIN
-- preparing Request...
l_http_request := UTL_HTTP.begin_request('/*your GET service URL here*/'
, 'GET'
, 'HTTP/1.1');
-- ...set header's attributes
UTL_HTTP.set_header(l_http_request, '/*header name*/', '/*header value*/');
-- ...set input parameters
-- UTL_HTTP.write_text(l_http_request, l_param_list);
-- get Response and obtain received value
l_http_response := UTL_HTTP.get_response(l_http_request);
UTL_HTTP.read_text(l_http_response, l_response_text);
DBMS_OUTPUT.put_line(l_response_text);
l_list := json_list(l_response_text); -- get json response here
--loop through JSON response array:
FOR i IN 1..l_list.count
LOOP
A_id := json_ext.get_string(json(l_list.get(i)),'_id');
UserId := json_ext.get_string(json(l_list.get(i)),'UserId');
UserName := json_ext.get_string(json(l_list.get(i)),'UserName');
OutletCode := json_ext.get_string(json(l_list.get(i)),'OutletCode');
OutletName := json_ext.get_string(json(l_list.get(i)),'OutletName');
MobileNumber := json_ext.get_string(json(l_list.get(i)),'MobileNumber');
PhoneNumber := json_ext.get_string(json(l_list.get(i)),'PhoneNumber');
Address := json_ext.get_string(json(l_list.get(i)),'Address');
City := json_ext.get_string(json(l_list.get(i)),'City');
State := json_ext.get_string(json(l_list.get(i)),'State');
Postcode := json_ext.get_string(json(l_list.get(i)),'Postcode');
Email := json_ext.get_string(json(l_list.get(i)),'Email');
UpdateCount := json_ext.get_string(json(l_list.get(i)),'UpdateCount');
loginCount := json_ext.get_string(json(l_list.get(i)),'loginCount');
ReferencePhoto := json_ext.get_string(json(l_list.get(i)),'ReferencePhoto');
Updates := json_ext.get_string(json(l_list.get(i)),'Updates');
AccountLocked := json_ext.get_string(json(l_list.get(i)),'AccountLocked');
Oracle_Flag := json_ext.get_string(json(l_list.get(i)),'Oracle_Flag');
acl := json_ext.get_string(json(l_list.get(i)),'acl');
--insert into your table
insert .....
두 도구에 대해 알고 있습니다. 하지만 프로덕션 환경에 설치할 수 없기 때문에 APEX 또는 PL/JSON을 설치할 수 없습니다. 필자는 원시 PL/SQL 코드에서만이 작업을 수행해야합니다. 그리고 12c 데이터베이스 버전을 사용하고 있습니다. – Rohit
버전을 배포? 12c에는 기본 JSON 처리 기능이 있습니다. 이전 버전에서는 [PL/JSON] (https://github.com/pljson/pljson/)을 사용해 볼 수 있습니다. –
12c 버전을 사용하고 있습니다. 요구 사항 때문에 PL/JSON 또는 APEX를 사용할 수 없습니다. 라이브러리없이 PL/SQL에서 어떻게하면됩니까? – Rohit
12c를 사용하고 있다면 호크가 이미 답변에 링크되어 있으므로 내장 [JSON handling] (https://docs.oracle.com/database/121/ADXDB/json.htm#ADXDB6246)을 사용하십시오. –