定义逻辑数据库,对于访问数据来说在性能上有较大的提高。
对于有附加 逻辑数据库 的报表程序 ,最重要的 事件是逻辑 数据库程序 从数据库表 中读取了行 的时刻(参 见 用逻辑数据库访问数据 )。要在此 事件处启动 过程块,请 按照下列方 法使用 GET 语句:
GET <table> [FIELDS <list>].
此语句之后 ,可以使用 数据库表 <table> 的当前行。 在表工作区 <table> 中提供了数 据。
逻辑数据库 从所有数据 库表中读取 所有列,没 有为逻辑数 据库中的字 段指定这些 数据库表, 并且这些数 据库表优于
逻辑数据库 访问路径上 的 <table>( 参见 从报表程序中控制数据库访问)。不管是 否为这些表 指定了 GET 语句,这都 与事实无关 。只有在程 序中使用 TABLES 语句声明表 之后,才可 以访问这些 表的数据。
对于为逻辑 数据库中的 选择字段指 定的表,性 能可以更好 一些(参见 编辑选择)。如果这 样的表优于 逻辑数据库 访问路径上 的 <table>, 并且没有为 它们指定 GET 语句,则系 统只从在程 序中用 TABLES 语句声明的 表中读取所 有列的数据 。从在程序 中没有用 TABLES 语句声明的 表中,系统 只读取关键 字段(逻辑 数据库需要 关键字段生 成访问路径 )。
使用 FIELDS 选项,可以 外在地指定 应该由逻辑 数据库读取 的数据库表 的列。在 外在地指定数据库表的字段 中对 FIELDS 选项作了介 绍。
REPORT SAPMZTST.
TABLES: SPFLI, SFLIGHT, SBOOK.
START-OF-SELECTION.
WRITE 'Test Program for GET'.
GET SPFLI.
SKIP.
WRITE: / 'From:', SPFLI-CITYFROM,
'To:', SPFLI-CITYTO.
GET SFLIGHT.
SKIP.
WRITE: / 'Carrid:', SFLIGHT-CARRID,
'Connid:', SFLIGHT-CONNID.
ULINE.
GET SBOOK.
WRITE: / 'Fldate:', SFLIGHT-FLDATE,
'Bookid:', SBOOK-BOOKID,
'Luggweight', SBOOK-LUGGWEIGHT.
ULINE.