我不太了解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;

我假设在create和free调用之间的操作使其具有相关性,但是我不清楚如何。

最佳答案

在早期,您总是被迫使用DBMS_LOB包。然后在Oracle 10g中引入了一个称为“LOB的SQL语义”的功能,现在您可以使用简化的语法。

CREATETEMPORARY中,您可以使用SQL语义指定不能指定的LOB持续时间。

在您的情况下,以相同的方式释放LOB,即当您离开声明LOB的范围(即PL / SQL块)时,然后将其释放。

当您使用FREETEMPORARY时,表空间中的临时段将被释放,当您调用myclob := NULL;时,它将被保留。

关于oracle - dbms_lob.createtemporary()有什么意义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21219588/

10-15 21:32