3

如何计算总数。表中的记录数?我想在数据库中显示所有表名以及编号。每个表中的记录数

4

4 回答 4

5

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

我们的 DBA 只使用进度实用程序。在 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.
于 2009-08-21T16:20:46.670 回答
5

最快的方法是:

proutil dbname -C tabanalys > dbname.tab

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

当然,您也可以阅读每条记录并计算它们,但这往往会慢很多。

于 2009-08-28T18:32:42.640 回答
1

一个简单的:

Select count(*) from tablename.

稍微复杂一点:

Def var i as int.
for each table:
    i = i + 1.
end.
display i.

对于更复杂的答案,你得到了其他答案。

于 2013-08-30T14:05:43.170 回答
-1

使用CURRENT-RESULT-ROW带有DEFINE QUERYand的函数GET LAST来获取记录总数:

例如

DEFINE QUERY qCustomer FOR Customer SCROLLING.
OPEN QUERY qCustomer FOR EACH Customer NO-LOCK.

GET LAST qCustomer.
DISPLAY CURRENT-RESULT-ROW("qCustomer") LABEL "Total number of rows".
...
CLOSE QUERY qCustomer.
于 2013-11-28T01:36:17.730 回答