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