Top/Oracle/テーブル一覧を件数と同時に表示するSQL

Oracle/テーブル一覧を件数と同時に表示するSQL のバックアップ(No.4)


テーブル一覧を件数と同時に表示するSQLは以下の通りです。

SQL版

SELECT
    TABLE_NAME,
    TO_NUMBER(
      EXTRACTVALUE(
        XMLTYPE(
          DBMS_XMLGEN.GETXML('SELECT COUNT(*) C FROM '||TABLE_NAME))
          ,'/ROWSET/ROW/C')) COUNT
FROM USER_TABLES
WHERE TABLE_NAME NOT LIKE 'BIN$%'
AND (IOT_TYPE != 'IOT_OVERFLOW' OR IOT_TYPE IS NULL)
ORDER BY TABLE_NAME
;

PL/SQL版

DECLARE
    NUM_COUNT NUMBER;
BEGIN
    FOR CUR IN (SELECT * FROM USER_TABLES) LOOP
        EXECUTE IMMEDIATE 'SELECT COUNT(*) INTO :NUM_COUNT FROM ' ||
        CUR.TABLE_NAME INTO NUM_COUNT;
        DBMS_OUTPUT.PUT_LINE(
        CUR.TABLE_NAME || ' : ' || NUM_COUNT || '件');
    END LOOP;
END;
/

Analyze直後の場合

Analyze直後であれば、NUM_ROWSに値が入ってくるので以下のSQLでも抽出可能です。

SELECT T.TABLE_NAME, T.NUM_ROWS , C.COMMENTS
FROM USER_TABLES T, USER_TAB_COMMENTS C
WHERE C.TABLE_NAME(+)=T.TABLE_NAME
ORDER BY T.TABLE_NAME
;

ページ新規作成

新しいページはこちらから投稿できます。

TOP