スキーマ内のすべてのテーブルの数を取得する 質問する

スキーマ内のすべてのテーブルの数を取得する 質問する

スキーマ内のすべてのテーブルのレコード数を取得しようとしています。PL/SQL の記述に問題があります。これまでに行った操作は次のとおりですが、エラーが発生します。変更点があれば提案してください。

DECLARE
v_owner varchar2(40);
v_table_name varchar2(40);

cursor get_tables is
select distinct table_name,user
from user_tables
where lower(user) = 'SCHEMA_NAME';


begin

open get_tables;
fetch get_tables into v_table_name,v_owner;

    INSERT INTO STATS_TABLE(TABLE_NAME,SCHEMA_NAME,RECORD_COUNT,CREATED)
    SELECT v_table_name,v_owner,COUNT(*),TO_DATE(SYSDATE,'DD-MON-YY') FROM         v_table_name;

CLOSE get_tables;

END;

ベストアンサー1

これは、1 つのステートメントといくつかの XML マジックで実行できます。

select table_name, 
       to_number(extractvalue(xmltype(dbms_xmlgen.getxml('select count(*) c from '||owner||'.'||table_name)),'/ROWSET/ROW/C')) as count
from all_tables
where owner = 'FOOBAR'

おすすめ記事