Salvar dados retorno de webservice em variavel

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
carlynhos77
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 172
Registrado em: Seg, 24 Out 2016 7:20 pm

Ola, boa noite...

Estou executando o seguinte código:

Selecionar tudo

declare
    l_clob      CLOB;
BEGIN
 
    l_clob := apex_web_service.make_rest_request(
    p_url         => 'https://wwws.tcm.go.gov.br/passaporte/api/auth/representacoes',
    p_http_method => 'GET' );
END;
ele me retorna:

{"nome":"JOSE CARLOS VICENTE PEREIRA","representacoes":[{"codigo":5464,"representacao":"GESTOR DE UNIDADE GESTORA","unidadeId":3684,"unidade":"SECRETARIA MUNICIPAL ESPECIAL DE PREVIDÊNCIA PRÓPRIA","tipo":"AUTARQUIA DO RPPS","poder":"EXECUTIVO","municipioId":11,"municipio":"ALTO PARAÍSO DE GOIÁS","dataInicioRepresentacao":"2017-01-02","dataFimRepresentacao":"2020-12-31"}]}

Preciso que, ao executar o código, o valor "codigo": fosse jogado numa variável (item de aplicação)... nesse exemplo de retorno acima, queria o valor "5464" dentro de uma variável

Alguém pode me ajudar??? agradeço
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Tem várias formas de se fazer isso:

Abaixo é o jeito do vovô:

Selecionar tudo

SQL> set serveroutput on;
SQL> 
SQL> declare
  2    vjson   varchar2(2000) :='{"nome":"JOSE CARLOS VICENTE PEREIRA","representacoes":[{"codigo":5464,"representacao":"GESTOR DE UNIDADE GESTORA","unidadeId":3684,"unidade":"SECRETARIA MUNICIPAL ESPECIAL DE PREVIDÊNCIA PRÓPRIA","tipo":"AUTARQUIA DO RPPS","poder":"EXECUTIVO","municipioId":11,"municipio":"ALTO PARAÍSO DE GOIÁS","dataInicioRepresentacao":"2017-01-02","dataFimRepresentacao":"2020-12-31"}]}';
  3    vcodigo varchar2(100);
  4    vini    number;
  5  begin
  6    vini    := instr(vjson,'"codigo":') + 9;
  7    vcodigo := substr( vjson, vini, instr(vjson,',',vini)-vini ) ;
  8  
  9    dbms_output.put_line( vcodigo );
 10  end;
 11  /

5464

PL/SQL procedure successfully completed


SQL> 
Mas é claro, você pode fazer isso de forma bem mais simples usando Expressões Regulares. (REGEXP).

Selecionar tudo

SQL> select regexp_substr('{"nome":"JOSE CARLOS VICENTE PEREIRA","representacoes":[{"codigo":5464,"representacao":"GESTOR DE UNIDADE GESTORA","unidadeId":3684,"unidade":"SECRETARIA MUNICIPAL ESPECIAL DE PREVIDÊNCIA PRÓPRIA","tipo":"AUTARQUIA DO RPPS","poder":"EXECUTIVO","municipioId":11,"municipio":"ALTO PARAÍSO DE GOIÁS","dataInicioRepresentacao":"2017-01-02","dataFimRepresentacao":"2020-12-31"}]}'
, '"codigo":[0-9]+',1) cod 
from dual;

COD
-------------
"codigo":5464

SQL> 
E também funções JSON que estão presentes no oracle 12c.

E no seu caso que você está usando APEX, veja esse comando: APEX_JSON.GET_VALUE
https://docs.oracle.com/cd/E59726_01/do ... AEAPI29720
carlynhos77
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 172
Registrado em: Seg, 24 Out 2016 7:20 pm

ola, boa noite

desculpa, mas não entendi, após eu chamar a URL e ela me retornar isso:

{"nome":"JOSE CARLOS VICENTE PEREIRA","representacoes":[{"codigo":5464,"representacao":"GESTOR DE UNIDADE GESTORA","unidadeId":3684,"unidade":"SECRETARIA MUNICIPAL ESPECIAL DE PREVIDÊNCIA PRÓPRIA","tipo":"AUTARQUIA DO RPPS","poder":"EXECUTIVO","municipioId":11,"municipio":"ALTO PARAÍSO DE GOIÁS","dataInicioRepresentacao":"2017-01-02","dataFimRepresentacao":"2020-12-31"}]}

como esse bloco de texto e código irá cair nesse select???

visto que chamo isso através função onde tem a url, dai o bloco de texto já vem...

como isso vai cair entre esses parenteses??

select regexp_substr( )

eu teria q direcionar isso dentra da funçao ne
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Eu só usei um SELECT pra demonstrar o que você precisa fazer. Também pra gente conseguir ver o resultado.
Mas no seu programa, você usa variaveis, etc.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 20 visitantes