Skip to content

Instantly share code, notes, and snippets.

@ujnak
Last active December 10, 2021 03:02
Query cacheを取得する
declare
/* 各種検索条件は定数として定義する。 */
C_ORIGIN constant varchar2(40) := 'https://ホスト名';
C_USERNAME constant varchar2(16) := 'RDF Graph Serverのユーザー名';
C_PASSWORD constant varchar2(16) := 'RDF Graph Serverのユーザーのパスワード';
C_DATASOURCE constant varchar2(16) := 'apexdev';
C_NETWORK_OWNER constant varchar2(16) := 'APEXDEV';
C_NETWORK_NAME constant varchar2(16) := 'NET1';
C_MODEL constant varchar2(16) := 'VFAMILY';
-- REST APIの呼び出しに使用する。
l_blob blob;
l_url varchar2(400);
l_parms apex_application_global.VC_ARR2;
l_values apex_application_global.VC_ARR2;
-- SPARQLの検索結果となるJSONのパースに使用する。
l_json json_object_t;
l_items json_array_t;
l_row json_object_t;
begin
/*
* Query cacheの内容を取得する。
*/
l_url := C_ORIGIN || '/orardf/api/v1/datasources/' || C_DATASOURCE || '/sparql/cache/model';
l_parms.delete;
l_values.delete;
l_parms(1) := 'networkOwner';
l_values(1) := C_NETWORK_OWNER;
l_parms(2) := 'networkName';
l_values(2) := C_NETWORK_NAME;
l_parms(3) := 'model';
l_values(3) := C_MODEL;
/* REST APIの呼び出し */
l_blob := apex_web_service.make_rest_request_b(
p_url => l_url
, p_http_method => 'GET'
, p_username => C_USERNAME
, p_password => C_PASSWORD
, p_parm_name => l_parms
, p_parm_value => l_values
);
-- JSON文書から、検索結果となるそれぞれの行を取り出し印刷する。
l_json := json_object_t.parse(l_blob);
l_items := l_json.get_array('items');
for i in 0..(l_items.get_size - 1)
loop
l_row := treat(l_items.get(i) as json_object_t);
dbms_output.put_line('Cache ID: ' || l_row.get_string('cacheId'));
dbms_output.put_line('-------------- SPARQL ----------------');
dbms_output.put_line(l_row.get_string('sparql'));
dbms_output.put_line('-------------- Transalted SQL Start ----------------');
dbms_output.put_line(l_row.get_string('sql'));
dbms_output.put_line('-------------- Transalted SQL End ----------------');
end loop;
end;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment