Разделение столбца CLOB с использованием производных (виртуальных) столбцов - PullRequest
0 голосов
/ 08 февраля 2019

Использование производных столбцов для автоматического разделения больших столбцов

В нашей таблице есть столбец CLOB.Проблема заключается в том, что всякий раз, когда пользовательский интерфейс или какое-либо приложение пытается извлечь этот столбец, его необходимо сначала разбить на более мелкие куски (поскольку Oracle ограничивает VARCHAR2 до 4000).

Имеет ли смысл использовать виртуальные (производные) столбцы дляавтоматически разбить столбец CLOB на 4k сегментов (как показано ниже).

Таким образом - любое приложение может просто запросить, скажем, seg_1, если оно хочет только первые 4k символов.Или seg_1 + seg_2 и так далее.(предположим, здесь наши данные только 8k)

create table code_text2 
( 
      text_clob    clob,
      seg_1        varchar2 (4000 byte) generated always as (substrb
                               (text_clob, 1, 4000)) virtual,
      seg_2        varchar2 (4000 byte) generated always as (substrb (text_clob, 4001, 4000)) virtual 
); 

1 Ответ

0 голосов
/ 09 февраля 2019

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

Если клиент действительно заботится только о первых 4000 символов в CLOB (хотя я не могу понять, почему клиент этого захочет), он может сделать:

select dbms_lob.substr( mylob, 4000, 1 ) ...

Я не думаю, что вы должны использовать SUBSTRB с CLOBs, так как они являются символьными данными.Что произойдет, если ваш 4000-й символ имеет ширину 2 байта?Это будет повреждено.

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