Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Помогите загрузить JSON  [new]
Титов Артем
Member

Откуда: МО
Сообщений: 297
Привет.

Возникла сложность с загрузкой JSON при помощи серверной процедуры.

Сами данные получаются по ссылке: [url=]http://www.ccredproject.com/stock/market_orders.php?market=BTC-ETH[/url]

Данные в result из набора сами делятся на два набора: buy и sell.
Процедура работает, когда внутри result больше нет наборов.

Что-то я неверно в коде написал. Помогите плз.

 PROCEDURE PRC_GET_MARKETORDERS_DATA(IN_MARKET_NAME IN VARCHAR2,
                                      IN_ORDERS_LIST IN CLOB) AS
    CDATA  CLOB;
    VAR_1  CLOB := IN_ORDERS_LIST;
    v_json json;
    --  v_array         json_list;
    v_array_1       json_list;
    v_array_2       json_list;
    v_array_element json;
  BEGIN
    execute immediate 'truncate table BIT_MARKETORDERS_TBL';
    DBMS_LOB.CREATETEMPORARY(CDATA, FALSE);
    CDATA := VAR_1;
  
    v_json := json(CDATA);
  
    --v_array := json_list(v_json.get('result'));
  
    v_array_1 := json_list(v_json.get('buy'));
    v_array_2 := json_list(v_json.get('sell'));
  
    for v_i in 1 .. v_array_1.count loop
      v_array_element := json(v_array_1.get(v_i));
      begin
        INSERT INTO BIT_MARKETORDERS_TBL
          (MARKETNAME, ORDERTYPE, QUANTITY, RATE)
        VALUES
          (IN_MARKET_NAME,
           1,
           v_array_element.get('Quantity').get_number(),
           v_array_element.get('Rate').get_number());
      exception
        when others then
          raise_application_error(-20001,
                                  'Ошибка сохранения JSON. Проверьте данные по покупке');
      end;
    end loop;
  
    for v_i in 1 .. v_array_2.count loop
      v_array_element := json(v_array_2.get(v_i));
      begin
        INSERT INTO BIT_MARKETORDERS_TBL
          (MARKETNAME, ORDERTYPE, QUANTITY, RATE)
        VALUES
          (IN_MARKET_NAME,
           2,
           v_array_element.get('Quantity').get_number(),
           v_array_element.get('Rate').get_number());
      exception
        when others then
          raise_application_error(-20001,
                                  'Ошибка сохранения JSON. Проверьте данные по продаже');
      end;
    end loop;
  
    DBMS_LOB.freetemporary(CDATA);
    COMMIT;
  END PRC_GET_MARKETORDERS_DATA;
1 июл 17, 13:29    [20605188]     Ответить | Цитировать Сообщить модератору
 Re: Помогите загрузить JSON  [new]
dba123
Member

Откуда:
Сообщений: 1054
Титов Артем,

1) Уберите это из кода.
Вам, надеюсь, не доплачивают за сокрытие от бизнеса реальных ошибок.

[src oracle]
exception
when others then
raise_application_error(-20001,
'Ошибка сохранения JSON. Проверьте данные по продаже');
[src]
3 июл 17, 16:04    [20609597]     Ответить | Цитировать Сообщить модератору
 Re: Помогите загрузить JSON  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6713
Титов Артем
Сами данные получаются по ссылке


Конечно же все ломанулись загружать что-либо по ссылке.

Приведи пример данных, описание ошибки, ddl таблиц и т.п.
5 июл 17, 09:15    [20614439]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить