Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Результат запроса обернуть в json / 6 сообщений из 6, страница 1 из 1
12.12.2018, 22:56
    #39747003
iv_roman_vl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат запроса обернуть в json
Доброго времени суток!
Версия oracle 11.2
Можно ли сделать функцию, которая будет возвращать json.
В ней будет select, потом результат этого select обернуть в json.

Можете скинуть ссылку на пример.
...
Рейтинг: 0 / 0
13.12.2018, 07:45
    #39747069
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат запроса обернуть в json
...
Рейтинг: 0 / 0
13.12.2018, 09:11
    #39747102
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат запроса обернуть в json
Вот для любого sql(кроме полей clob,blob)

Код: 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.
59.
60.
61.
62.
63.
64.
65.
function get_jsonTG(p_query  in varchar2) return clob is
l_cursor number;
l_status number;
l_desc_tab dbms_sql.desc_tab;
  l_cols number;
  sp varchar2(4000);
lclob clob ;
  l_columnValue varchar2(2000) ;
  nb binary_integer;
  l_separator varchar2(1);
begin
DBMS_LOB.CREATETEMPORARY(lclob,TRUE, DBMS_LOB.SESSION);
nb:=0;
sp:='['||chr(13)||chr(10);
nb:=nvl(dbms_lob.getlength(lclob),0)+1;
dbms_lob.write(lclob,length(sp),nb,sp);
l_cursor := dbms_sql.open_cursor;
dbms_sql.parse( l_cursor, p_query, dbms_sql.native );


dbms_sql.describe_columns( l_cursor, l_cols, l_desc_tab );

    for i in 1 .. l_cols loop
        begin
            dbms_sql.define_column( l_cursor, i,
                                    l_columnValue, 2000 );
           l_cols := i;
      
        end;
    end loop;


    dbms_sql.define_column( l_cursor, 1, l_columnValue,
                            2000 );
  l_status := dbms_sql.execute(l_cursor);
 
    LOOP
        EXIT WHEN ( dbms_sql.fetch_rows(l_cursor) <= 0 );
  l_separator := ',';
         sp:='{';
        FOR i IN 1 .. l_cols LOOP
            dbms_sql.column_value( l_cursor, i, l_columnValue );
        --  s:=s||l_desc_tab(i).col_name||'/'||l_columnValue||';';
        if i=l_cols then
         l_separator := '';
        end if;
        if(l_desc_tab(i).col_name='PARENTID') then
        l_desc_tab(i).col_name:='_parentId';
        end if;
            sp:=sp||'"'||l_desc_tab(i).col_name||'":"'||l_columnValue||'"'||l_separator;
      
        END LOOP;
        sp:=sp||'}'||chr(13)||chr(10);
         nb:=nvl(dbms_lob.getlength(lclob),0)+1;
          dbms_lob.write(lclob,length(sp),nb,sp);
          sp:='';
      
    END LOOP;
    dbms_sql.close_cursor(l_cursor);
   sp:=']';
  nb:=nvl(dbms_lob.getlength(lclob),0)+1;
dbms_lob.write(lclob,length(sp),nb,sp);
return(lclob);

end get_jsonTG;
...
Рейтинг: 0 / 0
13.12.2018, 09:15
    #39747109
Alex URS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат запроса обернуть в json
ElicRTFM Concatenation Operator (FAQ)

и да...но жутко неудобно
APEX_JSON
...
Рейтинг: 0 / 0
13.12.2018, 09:18
    #39747111
Alex URS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат запроса обернуть в json
irbis_alВот для любого sql(кроме полей clob,blob)

]

PL/JSON ....
...
Рейтинг: 0 / 0
13.12.2018, 10:25
    #39747162
iv_roman_vl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат запроса обернуть в json
irbis_al,Alex URS,
Спасибо всем за наводку!

А вот по производительности, где лучше формировать json, на сервере приложений или в БД?
При условии что иную логику помимо результата select(а) вносить не буду.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Результат запроса обернуть в json / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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