No ambiente oracle, às vezes é necessário acessar a interface do webservice de terceiros. Às vezes, temos um capricho, se acessar essas interfaces for como acessar uma tabela local, tudo bem. Segue o método de implementação
exemplo de dados
O seguinte é um exemplo simples de um retorno de interface
{
"code": 200,
"data": [
{
"parent": "B01",
"name": "xxxxx",
"code": "B0101",
"enable_flag": "Y",
"los_date": ""
},
{
"parent": "B0101",
"name": "gggggggggg",
"code": "B010105",
"enable_flag": "Y",
"los_date": ""
}
]
}
Implementação
Duas ferramentas são usadas aqui: oracle apex e a biblioteca de código aberto de três partes pljson, fácil de implementar
CREATE OR REPLACE VIEW XXXXX_V AS
SELECT json.status_code,
budget_dept_code,
budget_dept_name,
parent_code,
enable_flag,
end_active_date
FROM TABLE(pljson_table.json_table(apex_web_service.make_rest_request(p_url => 'https://blog.csdn.net/x6_9x',
p_http_method => 'GET',
p_wallet_path => xxx_ysx_yyds.get_wallet_path,
p_wallet_pwd => xxx_ysx_yyds.get_wallet_pwd),
pljson_varray('code',
'data[*].code',
'data[*].name',
'data[*].parent',
'data[*].enable_flag',
'data[*].los_date'),
pljson_varray('status_code',
'budget_dept_code',
'budget_dept_name',
'parent_code',
'enable_flag',
'end_active_date'),
table_mode => 'nested')) json
ORDER BY 2;
Se você quiser consumir a interface https, você precisa configurar o oracle wallet para importar o certificado. Aqui, a interface com parâmetros também é suportada. Você pode colocar os parâmetros na condição where. Para detalhes, você pode consultar o uso de apex_web_service.make_rest_request, que realiza o mesmo que escrever
sql To access webservice data