Объедините несколько рядов сгустков в один - PullRequest
0 голосов
/ 02 июля 2019

У меня есть таблица, которая имеет 2 поля:

1) id - номер

2) описание - clob

В этой таблице несколько строк для одного конкретного идентификатора.Я хочу создать еще одну таблицу, используя эту таблицу, которая объединит строки clob в одну для определенного идентификатора.Я пытаюсь использовать ниже SQL для объединения строк -

    SELECT id,
        rtrim(xmlagg(xmlelement(e,
                description,
               CHR (10) || CHR (10) ).extract('//text()')
 order by rowid).GetClobVal(),chr(10)||chr(10))
               description2
       FROM table a
   GROUP BY id

Но это дает мне ORA-22813 ошибка.Есть ли обходной путь для решения этой проблемы?

ORA-22813: значение операнда превышает системные ограничения

1 Ответ

0 голосов
/ 02 июля 2019

Вот описание и действие для ошибки:

ORA-22813 : значение операнда превышает системные ограничения.

Причина : Значение объекта или коллекции было слишком большим.Размер значения может превышать 30 КБ в контексте SORT, или размер может быть слишком большим для доступной памяти.

Действие : выберите другое значение и повторите операцию.

НО, мы можем пропустить те записи, которые после конкатенации будут больше 30К.Значит Мы можем показать «ОШИБКА В КОНКАТЕНЦИИ» вместо фактической конкатенации, поскольку это все равно невозможно.

Попробуйте выполнить следующее.Это должно работать для вас.

SELECT
    ID,
    CASE
        WHEN SUM((DBMS_LOB.GETLENGTH("DESCRIPTION"))) / 1024 < 30 
        THEN 
        RTRIM(XMLAGG(XMLELEMENT(E, DESCRIPTION, CHR(10)
        || CHR(10)).EXTRACT('//text()')  ORDER BY
                ROWID
        ).GETCLOBVAL(), CHR(10)
                        || CHR(10))
        ELSE TO_CLOB('ERROR IN CONCATENATION')
    END AS DESCRIPTION2
FROM
    TABLEA
GROUP BY
    ID;

Это обходной путь с ограниченной функциональностью.

Опубликовал ответ, учитывая, что он может быть полезен для вас.

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...