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

Можете скинуть ссылку на пример.
...
Рейтинг: 0 / 0
Результат запроса обернуть в json
    #39747069
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Результат запроса обернуть в json
    #39747102
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот для любого 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
Результат запроса обернуть в json
    #39747109
Alex URS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicRTFM Concatenation Operator (FAQ)

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

]

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

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


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