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

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

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

目次

SQL版

SELECT文で書く場合は、以下のようになります。

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版

PL/SQLが利用できる場合、以下のように書いてもOKです。

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に値が入っているので、以下のSELECT文でも抽出可能です。

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
;
このページを共有:
  • このページをはてなブックマークに追加 このページを含むはてなブックマーク
  • このページをlivedoor クリップに追加 このページを含むlivedoor クリップ
  • このページをYahoo!ブックマークに追加
  • このページを@niftyクリップに追加
  • このページをdel.icio.usに追加
  • このページをGoogleブックマークに追加

このページのURL:

ページ新規作成

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

TOP