Подтвердить что ты не робот

В чем смысл dbms_lob.createtemporary()?

Я не совсем понимаю смысл функции dbms_lob.createtemporary(). Как это сделать:

DECLARE
    myclob CLOB;
BEGIN
    myclob := 'foo';
END;

любой, отличный от:

DECLARE
    myclob CLOB;
BEGIN
    dbms_lob.createtemporary( myclob, TRUE );
    myclob := 'foo';
    dbms_lob.freetemporary( myclob );
END;

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

4b9b3361

Ответ 1

В прежние времена вы всегда были вынуждены использовать DBMS_LOB-пакет. Затем в Oracle 10g была введена функция, называемая "семантика SQL для LOB", и теперь вы можете использовать упрощенный синтаксис.

В CREATETEMPORARY вы можете указать длительность LOB в семантике SQL, которую вы не можете.

В вашем случае LOB освобождается таким же образом, то есть когда вы покидаете область действия (то есть блок PL/SQL), где объявляется LOB, тогда она освобождается.

Когда вы используете FREETEMPORARY, тогда временный сегмент в табличном пространстве освобождается, когда вы вызываете myclob := NULL;, он будет сохранен.