Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите загрузить JSON / 3 сообщений из 3, страница 1 из 1
01.07.2017, 13:29
    #39480893
Титов Артем
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите загрузить JSON
Привет.

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

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

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

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

Код: 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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
 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;
...
Рейтинг: 0 / 0
03.07.2017, 16:04
    #39481897
dba123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите загрузить JSON
Титов Артем,

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

[src oracle]
exception
when others then
raise_application_error(-20001,
'Ошибка сохранения JSON. Проверьте данные по продаже');
[src]
...
Рейтинг: 0 / 0
05.07.2017, 09:15
    #39482930
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите загрузить JSON
Титов АртемСами данные получаются по ссылке

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

Приведи пример данных, описание ошибки, ddl таблиц и т.п.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите загрузить JSON / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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