1: Por lo general, se realiza para gestionar el alcance de los almacenamientos intermedios.
Si tiene, por ejemplo, un procedimiento con una serie de procedimientos internos que acceden a la misma tabla, el búfer predeterminado para esa tabla terminará en el bloque de procedimiento de nivel superior. Por ejemplo,
procedure p1:
find first customer no-lock.
end.
procedure p2:
find last customer no-lock.
end.
terminaría buscando el búfer del cliente en el procedimiento que lo contiene. Si está tratando de mantener sus procedimientos internos débilmente acoplados y autónomos, es posible que no desee este comportamiento. Entonces definirías un buffer dentro de cada uno de los procedimientos internos.
Obv hay otras razones para definir almacenamientos intermedios, pero cuando ve el código que define un búfer con el mismo nombre que la tabla, generalmente se trata de alcance.
2: Siempre accede a la base de datos a través de un búfer. Cada tabla tiene un búfer predeterminado con el mismo nombre que la tabla, por lo
find first <buffername>.
buscará un buffer llamado buffername que puede ser un búfer definido de forma explícita o implícita un búfer predeterminado. La precedencia irá a un búfer explícitamente definido si existe.
@Tom Bascom Puede saber que, él es el progreso 'Jon Skeet, lo siento si dije su nombre en vano – Kyle