首页 > 解决方案 > PLSQL 函数返回一个 clob,但不清楚它是被隐式释放还是自动释放

问题描述

我对 PLSQL 很陌生。

但是,我正在使用 CLOB 数据类型。我听说用 CLOB 很容易造成内存泄漏?

这是我创建的一个函数,它只是从表中选择数据并将其放入 CLOB。我还需要做些什么来确保正确管理我的内存吗?

CREATE OR REPLACE FUNCTION getLastGPoverPeriod
RETURN clob IS
    stuff clob;
BEGIN 
   SELECT NAME INTO stuff 
   FROM TEMP;
   dbms_output.put_line(stuff);

   RETURN stuff; 
END;
/

标签: oracleplsql

解决方案


你的代码很好。当匿名块完成时,匿名块使用的资源会自动清除(未提交的事务除外)。我从未见过由 CLOB 引起的内存泄漏。

尽管大型 CLOB 存在一些潜在的空间问题。CLOB 可以存储在临时表空间中,这是一种有限的资源,而且大小并不总是合适的。. 但是一次读取一个 CLOB 应该不是问题,除非它是一个数 GB 的文件。


推荐阅读