我在很多地方都遇到过这段代码:
DEFINE BUFFER Customer FOR Customer.
我有两个问题:
这样做的目的是什么?为什么创建与表同名的缓冲区是有益的?
当编写代码访问该表/缓冲区时,Progress 如何知道是直接访问 DB 还是通过缓冲区访问?
1:通常是为了管理缓冲区的范围。
例如,如果您有一个包含多个内部过程的过程,这些内部过程都访问同一个表,那么该表的默认缓冲区最终将作用于顶级过程块。例如 -
procedure p1:
find first customer no-lock.
end.
procedure p2:
find last customer no-lock.
end.
最终将客户缓冲区的范围限定为包含过程。如果您试图保持内部程序松散耦合和独立,那么您可能不希望出现这种行为。因此,您需要在每个内部过程中定义一个缓冲区。
当然,定义缓冲区还有其他原因,但是当您看到定义与表同名的缓冲区的代码时,通常与范围有关。
2:它总是通过缓冲区访问DB。每个表都有一个与表同名的默认缓冲区,因此
find first <buffername>.
将查找名为 buffername 的缓冲区,该缓冲区可能是显式定义的缓冲区或隐式默认缓冲区。优先级将转到明确定义的缓冲区(如果存在)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)