有人能告诉我如何在oracle数据库中获取每个表中的行数吗?我发现了几个查询,但是没有一个查询,因为我使用的是oracle 7和sql plus 3.2,基本上我找到的所有内容都不起作用。我只需要一些适用于sql 加上3.2。
的东西必需:
表名行
表1 0
表2 5
...
是否可以用循环之类的东西来做?或者我到底应该做什么?
答案 0 :(得分:1)
如果SELECT table_name, num_rows from all_tables
无法满足您的需求。
您可以使用动态SQL并计算为选择的Rahul。
运行以下内容以获取在所有表上动态构建联合的结果,然后按照自己的查询运行结果以获得最终结果。
SELECT 'SELECT ' ||t.name || ' as tName, count(*) as Row_Cnt
FROM ' || t.name || ' UNION ALL '
FROM ALL_TABLES t
请务必删除最后一个查询的最后一个union语句。
另请注意:如果您无权查看该表,则该列表中不会显示该内容!
---更新------
因此,如果all_tables不存在,则这些都不起作用。因为我没有方便的oracle 7实例...你能看到SELECT * FROM dictionary
是否返回任何可能产生所有表的列表的东西吗?如果您找到视图或表对象,请使用它代替上面的all_tables。
我现在正在阅读oracle 7的文档,但发现很容易搜索。因此,猜测和检查方法可能会更快。
答案 1 :(得分:0)
最简单的解决方案是使用count()
函数。像
select 'table1' as table_name,
count(*) as number_of_rows
from table1