销毁 Oracle PLSQL 对象

Destroy Oracle PLSQL Object

有没有办法销毁 PL/SQL 对象,比如一条记录?

在visual pascal中,我们可以使用FreeAndNil(object),这个过程释放对象使用的内存,并指向Nil(null),从而销毁对象。

我想知道是否有办法在 PLSQL object/record 上执行此操作,或者我是否应该为其分配 null。

您可以将行类型设置为 null,没问题。

编译正常:

declare
  r dual%rowtype;
begin
  r := null;
end;

如果一个变量失去作用域(所以在 end; 之后),Oracle 将自动销毁它,因此不需要将它设置为 null,或以任何方式释放它。

问题是包有一个全局变量(包规范中声明的变量)。

客户端应用程序启动了一个执行此包中函数的事务;此函数更改了全局变量值。然后,另一个依赖于变量值的函数被调用。这导致了问题。

结论很明显:不要使用全局变量。

当然,还有其他解决方案,例如关闭交易(从而像 Patrick Hofman 解释的那样销毁变量)。

就像我说的,这是遗留软件...我重构了代码,这个问题(以及其他一些问题)消失了。感谢您的帮助!