Nano Hash - криптовалюты, майнинг, программирование

Использование listagg при переполнении varchar2 — что делать?

Может ли кто-нибудь посоветовать, что делать, когда использование listagg приводит к переполнению varchar2 из-за большого количества агрегированных строк (во время агрегирования в SQL-запросе через группу и т. д.) в одном поле?

Я использую отчет (это всего лишь ОДИН SQL-запрос), где я агрегирую телефонные коды по ZoneName (страна и т. д.), и некоторые из них имеют множество кодов для одной зоны, поэтому я могу получить ошибку «переполнения», вызывающую listagg с использованием varchar2, которые имеют ограничение 32767 .

Так что же делать в таких ситуациях? Переписать запрос и использовать курсоры? Есть ли обходной путь, чтобы обнаружить "переполнение" и разбить, например, такое "БОЛЬШОЕ ПОЛЕ" на ДВЕ строки, чтобы в каждой хватило места для "БОЛЬШОГО списка кодов"???

Поскольку сейчас я на 10gR2, я использую технику «Tab to string» от Tom Kyte. он использует тип:

CREATE OR REPLACE TYPE t_varchar2_tab AS TABLE OF VARCHAR2(32767);

И proc, который преобразует из таблицы Varchar2 в одну строку с ограничением в 32767 символов.

CREATE OR REPLACE FUNCTION tab_to_string (p_varchar2_tab  IN  t_varchar2_tab,
                                          p_delimiter     IN  VARCHAR2 DEFAULT ',') RETURN VARCHAR2 IS
  l_string     VARCHAR2(32767);
BEGIN
  FOR i IN p_varchar2_tab.FIRST .. p_varchar2_tab.LAST LOOP
    IF i != p_varchar2_tab.FIRST THEN
      l_string := l_string || p_delimiter;
    END IF;
    l_string := l_string || p_varchar2_tab(i);
  END LOOP;
  RETURN l_string;
END tab_to_string;
/

И на данный момент я получил ошибку «переполнение» в моем случае.

Я полагаю, что у listagg proc будет такая же проблема из-за использования Varchar2.

Любые советы?

UPD: Мне это нужно ТОЛЬКО (агрегация кодов в одном поле при формировании отчета) для ВЫВОДА данных для отчета (в .pdf или при печати). В базе данных все данные нормализованы.

11.11.2009

Ответы:


1

Лучшим способом было бы нормализовать данные, чтобы у вас была каждая строка в отдельной строке, тогда количество элементов, которые вы можете иметь, ограничено базой данных, а не одним полем.

tab_to_string полезен только для вывода, и я сомневаюсь, что вы хотите видеть поле> 32K символов.

11.11.2009
  • У меня есть нормализованные данные - коды иерархически расположены в таблице и ТОГДА агрегируются через подключение по предыдущему. И ДА, мне нужно вывести их в одно поле в отчете! И именно у меня есть одна строка с названием зоны, ее ценой и ВСЕМИ кодами для этой зоны в ОДНОМ поле, и это может быть довольно долго при печати. 11.11.2009
  • Как вы печатаете только в форме с разделителями или вы добавляете возврат каретки в каком-то месте? 11.11.2009
  • Печатаю в виде таблицы - столбцы, строки. Почти то же самое, что я вижу, когда запускаю запрос в БД напрямую. 11.11.2009
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..