Временный большой объект - это полноценный большой объект, единственное отличие от обычного заполненного большого объекта в том, что он не связан с таблицей и находится во временном табличном пространстве. Подробнее см. здесь . Цель состоит в том, чтобы управлять вашим LOB во временном пространстве, пока вы не будете готовы сохранить его в обычной строке таблицы.
Однако empty_clob
инициализировал локатор LOB и создает правильный LOB длиной 0. Я скопировал Пример Джулиана Дайкса из его превосходной презентации LOB Internals :
Таким образом, вы не можете позвонить dbms_lob.freetemporary
на empty_clob
, потому что его нет во временном табличном пространстве.
EDIT:
После того, как empty_clob
сохранен в таблице, вы можете проверить его LOBID:
CREATE TABLE t (c CLOB, e CLOB DEFAULT EMPTY_CLOB()) LOB (e) STORE AS SECUREFILE;
INSERT INTO t (c) VALUES (null);
SELECT DBMS_LOBUTIL.getinode(e).lobid AS lobid,
DBMS_LOBUTIL.getinode(e).length AS length,
DBMS_LOBUTIL.getinode(e).extents AS extents
FROM t;
LOBID LENGTH EXTENTS
0000000100000007E5E1 0 0
Согласно По мнению Джулиана, LOBID генерируется из последовательности, что означает, что он, скорее всего, уникален для всей базы данных.