Получение ошибки при забое данных из оракула

Получение приведенной ниже ошибки при запросе у oracle:

ORA-06502: PL / SQL: ошибка числового значения или значения: слишком маленький буфер строки символов
ORA-06512: в строке 1

Вот мой запрос:

with my_clob as ( select ID,SUBJECT,EMAIL_LAYOUT,EMAIL_SENDER_TYPE from BMS_EMAIL_TEMPLATE where ID = 26 ) select ID,SUBJECT,EMAIL_SENDER_TYPE, dbms_lob.substr(EMAIL_LAYOUT, 4000, (level - 1) * 4000 + 1) AS EMAIL_LAYOUT from my_clob connect by level <= ceil(dbms_lob.getlength(EMAIL_LAYOUT) / 4000)

Может кто-нибудь помочь мне, что я здесь скучаю?

0

Решение

Не могли бы вы предоставить описание таблицы BMS_EMAIL_TEMPLATE?
Это EMAIL_LAYOUT clob или это большой varchar2?

Я не могу воспроизвести вашу ошибку с помощью следующего кода

with bs as (
select to_clob( lpad('x',37,'x')) f1 from dual),
bs1 as (select f1||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 as f1 from bs),
bs2 as (select f1||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 as f1 from bs1),
bs3 as (select f1||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 as f1 from bs2),
cl as ( select f1||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 ||f1 as f1 from bs3),
my_clob AS (
SELECT
26 id,
'subj' subject,
f1 email_layout,
length(f1) email_length,
'est' email_sender_type
FROM
cl
) SELECT
id,
subject,
email_sender_type,
email_length,
dbms_lob.substr(email_layout,4000, (level - 1) * 4000 + 1) AS email_layout
FROM
my_clob
CONNECT BY
level <= ceil(dbms_lob.getlength(email_layout) / 4000);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]