1

特定の所有者の下にある各テーブルの行を取得するクエリを作成したいと考えています。私はクエリを書くのが苦手なので、インターネットで解決策を見つけることができませんでした。私が書いているクエリは次のとおりです。

SELECT TABLE_NAME, COUNT(*) FROM DBA_TABLES WHERE TABLE_NAME IN 
(SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER='ABC');

クエリが完全に間違っていることはわかっていますが、正確に何が欲しいかを知らせるためにクエリを指定しました。お役に立てば幸いです。私が得ているエラーは次のとおりです。

ORA-00937: not a single-group group function

同じことの正確なクエリを書くのを手伝ってください。ありがとう!

4

3 に答える 3

0

Getting the row count of all tables, can be done using a little XML magic:

select owner, 
       table_name, 
       to_number(extractvalue(xmltype(dbms_xmlgen.getxml('select count(*) c from "'||owner||'"."'||table_name||'"')),'/ROWSET/ROW/C')) as count
from dba_tables
where owner = 'ABC' 
  and iot_name is null; 

This generates a select count(*) from .. for every table, then "runs" that through dbms_xmlgen and parses the generated XML output for the actual number.

dbms_xmlgen documentation

于 2015-10-12T07:51:36.960 に答える