Oracle 18c, как определить столбец BLOB в личной временной таблице? - PullRequest
0 голосов
/ 06 ноября 2018

Во время написания определенной процедуры в базе данных Oracle (с использованием 18c) я столкнулся с проблемой, когда попытался определить временную таблицу PRIVATE со столбцом типа данных BLOB, но он не позволил мне.

Код для создания PRIVATE временной таблицы (есть также некоторые другие столбцы, но я закомментирую все остальные столбцы, кроме тех, которые упомянуты в следующем параграфе):

CREATE PRIVATE TEMPORARY TABLE ora$ptt_Test (
        id NUMBER(19), 
        userdata BLOB);

Когда я пытаюсь выполнить оператор выше, я получаю: ORA-14451: неподдерживаемая функция с временной таблицей 14451. 00000 - «неподдерживаемая функция с временной таблицей» * Причина: была сделана попытка создать IOT, указать физические атрибуты, указать раздел или параллельное предложение. * Действие: не делай этого.

Но если я прокомментирую столбец userdata, он будет успешно выполнен.

Все, что я мог найти в документации по Oracle 18c, это то, что ограничения / ограничения создания временных таблиц PRIVATE (доступны с 18c) должны быть такими же, как и для временных таблиц PUBLIC (которые также доступны до версии 18c), но это не так. истина, потому что я попытался определить временную таблицу PUBLIC со столбцом BLOB, и это сработало.

Я был бы очень признателен за любую помощь.

1 Ответ

0 голосов
/ 06 ноября 2018

Я попытался определить временную таблицу PRIVATE со столбцом типа данных BLOB, но это не позволило мне.

Это воспроизводимо как для BLOB, так и для BLOB. Вероятно, это ошибка, но ошибка документации, а не ошибка реализации.

Особенность временных таблиц в том, что они являются структурами памяти и структурами памяти сеансов. Следовательно, возникают сложности с управлением памятью, когда используются большие двоичные объекты. (Немного связано, одна из причин, по которой ORA-14451 создает PTT в PDB с включенной опцией в памяти .)

С другой стороны, мы можем создать коллекцию больших двоичных объектов в PL / SQL, чтобы не было абсолютного препятствия для обработки больших двоичных объектов в структурах памяти. Это означает, что это может быть ограничением первоначальной реализации, которая будет рассмотрена в следующем выпуске.

Ничто из этого, конечно, не поможет вам сейчас, но мы не можем многое предложить, кроме как поднять SR с Oracle (при условии, что вы работаете в организации, имеющей контракт на поддержку Oracle.

...