powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / клиент в СУБД Oracle для потребления чужих REST-сервисов
8 сообщений из 8, страница 1 из 1
клиент в СУБД Oracle для потребления чужих REST-сервисов
    #39717495
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
Согласно этой статье
https://oracle-base.com/articles/misc/web-services-and-the-oracle-database#consuming-rest-json-web-services
авторConsuming REST JSON Web Services

Prior to Oracle 12c (12.1.0.2), the only way to consume JSON web services in the database was to make a HTTP request to the web service, then use PL/SQL string handling to pull the data apart. Oracle 12c (12.1.0.2) now includes server side JSON support, allowing you to store JSON in the databases and query it as if it were relational data. This functionality is described here.

It would also be possible to load Java-based JSON APIs into the database and call them from PL/SQL.
The APEX_WEB_SERVICE package provides a simple API for consuming REST web services, but it doesn't include any JSON-specific functionality, so it will simplify the process of getting the JSON document, but once you have it you will have to process it manually or with the 12c functionality mentioned previously. You can see an example of using the APEX_WEB_SERVICE package here.

Означает ли это, что простейший вариант решения задачи "создать клиента в СУБД Oracle для потребления чужих REST-сервисов" - это воспользоваться APEX_WEB_SERVICE package ?
...
Рейтинг: 0 / 0
клиент в СУБД Oracle для потребления чужих REST-сервисов
    #39717682
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. не ясно зачем
2. а если так пошло на utl_https в 10 раз легче. например так без всяких апексообёрток
...
Рейтинг: 0 / 0
клиент в СУБД Oracle для потребления чужих REST-сервисов
    #39717855
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexus12,

Может быть это то что нужно?

Oracle REST Data Services
...
Рейтинг: 0 / 0
клиент в СУБД Oracle для потребления чужих REST-сервисов
    #39718170
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock,

1) зачем - чтобы постучаться из Oracle в чужой REST
2)
пример с APEX_WEB_SERVICE из https://oracle-base.com/articles/misc/apex_web_service-consuming-soap-and-rest-web-services#rest

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE OR REPLACE FUNCTION add_numbers (p_int_1  IN  NUMBER,
                                        p_int_2  IN  NUMBER)
  RETURN NUMBER
AS
  l_clob    CLOB;
  l_result  VARCHAR2(32767);
BEGIN

  -- Get the XML response from the web service.
  l_clob := APEX_WEB_SERVICE.make_rest_request(
    p_url         => 'http://oracle-base.com/webservices/add-numbers.php',
    p_http_method => 'GET',
    p_parm_name   => APEX_UTIL.string_to_table('p_int_1:p_int_2'),
    p_parm_value  => APEX_UTIL.string_to_table(p_int_1 || ':' || p_int_2)
  );

  -- Display the whole document returned.
  DBMS_OUTPUT.put_line('l_clob=' || l_clob);

  -- Pull out the specific value of interest.
  l_result := APEX_WEB_SERVICE.parse_xml(
    p_xml   => XMLTYPE(l_clob),
    p_xpath => '//answer/number/text()'
  );

  DBMS_OUTPUT.put_line('l_result=' || l_result);

  RETURN TO_NUMBER(l_result);
END;
/



пример по вашей ссылке
https://technology.amis.nl/2015/05/11/invoke-a-rest-service-from-plsql-make-an-http-post-request-using-utl_http-in-oracle-database-11g-xe/

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
create or replace
procedure publish_cinema_event
( p_room_id in varchar2
, p_party_size in number
) is
  req utl_http.req;
  res utl_http.resp;
  url varchar2(4000) := 'http://localhost:9002/cinema';
  name varchar2(4000);
  buffer varchar2(4000); 
  content varchar2(4000) := '{"room":"'||p_room_id||'", "partySize":"'||p_party_Size||'"}';
 
begin
  req := utl_http.begin_request(url, 'POST',' HTTP/1.1');
  utl_http.set_header(req, 'user-agent', 'mozilla/4.0'); 
  utl_http.set_header(req, 'content-type', 'application/json'); 
  utl_http.set_header(req, 'Content-Length', length(content));
 
  utl_http.write_text(req, content);
  res := utl_http.get_response(req);
  -- process the response from the HTTP call
  begin
    loop
      utl_http.read_line(res, buffer);
      dbms_output.put_line(buffer);
    end loop;
    utl_http.end_response(res);
  exception
    when utl_http.end_of_body 
    then
      utl_http.end_response(res);
  end;
end publish_cinema_event;



вроде бы первый пример проще второго, разве нет?
...
Рейтинг: 0 / 0
клиент в СУБД Oracle для потребления чужих REST-сервисов
    #39718172
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelle,
AFAIK ORDS служит для создания REST-сервисов и не может быть REST-клиентом для обращения к чужим REST-сервисам.
Если это не так - покажите пример.
...
Рейтинг: 0 / 0
клиент в СУБД Oracle для потребления чужих REST-сервисов
    #39718220
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexus12вроде бы первый пример проще второгоПростота странный критерий. Тем более при сравнении GET и POST.
Кстати, некто Alexus12 в 2012 году удовлетворился запросом валют ЦБ кодом в сотню строк, хотя можно было получить то же самое селектом в три строки без plsql.

Если же идти по феншую, документация содержит главу про вызов вебсервисов. Но там обертка над джавой и тоже требует доустановки.
...
Рейтинг: 0 / 0
клиент в СУБД Oracle для потребления чужих REST-сервисов
    #39718334
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

Были времена, когда мы пользовались utl_file для чтения файлов, потом пришел черед External Table. 6 лет прошло, версия 12.1 дает новые возможности - почему не использовать?

Мой вопрос скорее про то, что из предложенных вариантов современнее и требует меньше движений в кодировании и поддержке (например, авторизация OAuth и т.п.)
...
Рейтинг: 0 / 0
клиент в СУБД Oracle для потребления чужих REST-сервисов
    #39718365
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexus12версия 12.1 дает новые возможности - почему не использовать?
external table появился в 12.1 или апекса раньше не было?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / клиент в СУБД Oracle для потребления чужих REST-сервисов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]