Создать большой XML на PL / SQL - PullRequest
       2

Создать большой XML на PL / SQL

0 голосов
/ 15 декабря 2018

Я попытался создать свой xml-текст:

SELECT XMLELEMENT(
    "firms",
    XMLAGG(
        XMLELEMENT(
            "firm",c
            XMLELEMENT("FirmID", wo.id),
            XMLELEMENT("Name", substr(wo.namerus, 1, 120)),
            XMLELEMENT("ShortName", wo.code)           
        )
    )
)
INTO my_var
FROM organs wo
WHERE type_id = 5;

dbms_output.put_line(my_var.GetClobVal());

Но затем я получил ошибку:

ORA-06502: PL / SQL: ошибка числа или значения

Я знаю, что мои данные верны, потому что, если я удвоил первый столбец три или более раз, я снова получил бы эту ошибку.Как я могу создать большой XML?

1 Ответ

0 голосов
/ 15 декабря 2018

Вполне вероятно, что ошибка возникает не при создании XML, а при попытке его печати:

dbms_output.put_line(my_var.GetClobVal());

Существуют ограничения на dbms_output.put_line, которые вызывают проблемы при обработке больших данных:а именно, сгустки размером более 32 КБ не могут быть напечатаны таким образом, с ошибкой ORA-06502.

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

Иначе, взгляните на этот пост StackOverflow , который предоставляет решение, основанное на процедуре, которая выполняет итерации через clob и распечатывает один меньший фрагмент за раз.

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