如何使用Progress 4GL计算记录总数

3 progress-4gl

我该如何计算总数.表中的记录?我想在数据库中显示所有表名和no.每个表中的记录

DuS*_*orm 5

获取记录数的方式取决于您计划的应用程序.

我们的DBA只使用progress实用程序.在Unix/usr/dlc/bin/proutil -C dbanalys或一些变体中获取数据库信息并将其转储到文件中.

要从进度本身获取架构信息,可以使用VST表.特别是在特定数据库中,您可以使用_file表来检索所有表名.

获得表名后,可以使用查询来获取表中的记录数.查询特定表以获取记录计数的最快方法是使用预选.

这将需要使用动态缓冲区和查询.

所以你可以做类似以下的事情.

CREATE WIDGET-POOL.

DEF VAR h_predicate AS CHAR     NO-UNDO.
DEF VAR h_qry       AS HANDLE   NO-UNDO.
DEF VAR h_buffer    AS HANDLE   NO-UNDO.

FOR EACH _file NO-LOCK:

    h_predicate = "PRESELECT EACH " + _file._file-name + " NO-LOCK".

    CREATE BUFFER h_buffer FOR TABLE _file._file-name .
    CREATE QUERY h_qry.
    h_qry:SET-BUFFERS( h_buffer ).
    h_qry:QUERY-PREPARE( h_predicate ).
    h_qry:QUERY-OPEN().

    DISP _file._file-name h_qry:NUM-RESULTS.

    DELETE OBJECT h_qry.
    DELETE OBJECT h_buffer.

END.
Run Code Online (Sandbox Code Playgroud)


Tom*_*com 5

最快的方法是:

proutil dbname -C tabanalys > dbname.tab
Run Code Online (Sandbox Code Playgroud)

这是一个分析数据库的外部实用程序.

你当然也可以阅读每一条记录并计算它们,但这往往会慢得多.