如何计算总数。表中的记录?我想在数据库中显示所有表名和no。每个表中的记录
答案 0 :(得分: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.
答案 1 :(得分:5)
最快的方法是:
proutil dbname -C tabanalys > dbname.tab
这是一个分析数据库的外部实用程序。
你当然也可以阅读每一条记录并计算它们,但这往往会慢得多。
答案 2 :(得分:1)
一个简单的:
Select count(*) from tablename.
有点复杂:
Def var i as int.
for each table:
i = i + 1.
end.
display i.
对于更复杂的答案,你得到了其他答案。
答案 3 :(得分:-1)
将CURRENT-RESULT-ROW
功能与DEFINE QUERY
和GET LAST
一起使用以获取记录总数:
e.g。
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.