Конвертировать LISTAGG в XMLAGG - PullRequest
1 голос
/ 18 октября 2019

У меня есть запрос с использованием функции LISTAGG, который необходимо преобразовать в XMLAGG для обработки конкатенации строк, содержащей более 4000 символов:

 LISTAGG(NAME || INPUT || DESC || ' ' || '<cm>' || DATA || '</cm>', CHR(13)||CHR(10)) WITHIN GROUP(ORDER BY NAME) AS ENTRIES

Я пытаюсь выполнить следующее:

REPLACE(
 REPLACE(
    XMLAGG(
       XMLELEMENT("A",NAME|| INPUT || DESC || ' ' || '<cm>' || DATA || '</cm>', CHR(13)||CHR(10) ORDER BY NAME).getClobaVal(),<A>',''),
   '</A>','[delimiter]') AS ENTRIES

Обнаружена синтаксическая ошибка в ORDER BY

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Вы пропустили ") " и " '"

Попробуйте это:

REPLACE(
 REPLACE(
    XMLAGG(
       XMLELEMENT("A",NAME|| INPUT || DESC || ' ' || '<cm>' || DATA || '</cm>', CHR(13)||CHR(10) ORDER BY NAME).getClobaVal()),'<A>',''),
   '</A>','[delimiter]') AS ENTRIES
0 голосов
/ 18 октября 2019

Вы пропустили) Попробуйте пожалуйста:

XMLAGG(
         XMLELEMENT ("X", FIELD_NAME|| INPUT || DESCRIPTION_KEY || ' ' || '<cm>' || MATCH_DATA || '</cm>', CHR(13)||CHR(10)) ORDER BY FIELD_NAME)
...