powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
10 сообщений из 10, страница 1 из 1
как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
    #39329678
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. вот такая конструкция при "rownum <= 310" уже не работает:

Код: sql
1.
2.
3.
select ( LISTAGG( to_clob( object_Name ), ',' ) WITHIN GROUP ( ORDER BY null) ) as list_as_str
  from dba_objects
 where rownum <= 310



может можно как-то через to_clob или ещё как либо извратиться... В конечном итоге нужна передача большой строки в String-переменную в Java !
...
Рейтинг: 0 / 0
как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
    #39329679
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*при "rownum <= 320"
...
Рейтинг: 0 / 0
как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
    #39329709
arlx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select xmlagg(xmlelement(e, object_name || ',')).extract('//text()').getclobval() list_as_str
from dba_objects
...
Рейтинг: 0 / 0
как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
    #39329713
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnikможет можно как-то через to_clob или ещё как либо извратитьсяМожет стоит заглядывать в доку?
http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions089.htm The return data type is RAW if the measure column is RAW; otherwise the return value is VARCHAR2.
Есть минимум 4 способа
1. collect + UDF for concatenation
2. UDAG
Если плевать на скорость, лимиты и нельзя создавать никакие объекты
3. xmlagg
4. xquery + fn:string-join
19771585
...
Рейтинг: 0 / 0
как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
    #39329725
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopDBAshnikможет можно как-то через to_clob или ещё как либо извратитьсяМожет стоит заглядывать в доку?
http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions089.htm The return data type is RAW if the measure column is RAW; otherwise the return value is VARCHAR2.
Есть минимум 4 способа
1. collect + UDF for concatenation
2. UDAG
Если плевать на скорость, лимиты и нельзя создавать никакие объекты
3. xmlagg
4. xquery + fn:string-join
19771585

и как минимум 1 нормальный способ - вернуть яве коллекцию и пусть она сама клеит
...
Рейтинг: 0 / 0
как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
    #39329743
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonhsonи как минимум 1 нормальный способ - вернуть яве коллекцию и пусть она сама клеитКатегоричность высказывания при незнании подробностей, безусловно, говорит о высоком профессионализме.
...
Рейтинг: 0 / 0
как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
    #39329773
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

равно как и xmlagg
...
Рейтинг: 0 / 0
как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
    #39329822
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonhson,

Ты по ссылке выше сходи, ознкомься.
Потом протестируй перфоманс, например, если надо вернуть несколько агрегатов хотя бы по 100Кб.
Потом, наверняка, ты сможешь продемонстрировать как я неправ.
...
Рейтинг: 0 / 0
как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
    #39329934
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arlxselect xmlagg(xmlelement(e, object_name || ',')).extract('//text()').getclobval() list_as_str
from dba_objects

огромнейшее спасибо!
...
Рейтинг: 0 / 0
как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
    #39329961
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
единственный вопрос которые остаётся, как мне сделать нетормозную сортировку при применении этой конструкции в подзапросе? Пока наваял так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SEELCT
...
  Fieled1
  Fieled2
... 
,( select xmlagg(xmlelement(e, y.Document_Name || ',')).extract('//text()').getclobval() from ( select * from MOJA_SCHEMA.MOJA_TBLIZA order by id desc ) y where y.parentId = x.id ) as All_DocNames
...
from ....

но это грозит, очевидным full-scan-ом на MOJA_SCHEMA.MOJA_TBLIZA!

Если сую "order by" cразу после "where y.parentId = x.id" то огребаю ORA-00907 (missing right parenthesis)! :-(
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как можно было бы вернуть строку больше 4000 bytes сгенерённую LISTAGG !?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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