- 追加された行はこの色です。
- 削除された行はこの色です。
//Oracle/テーブル一覧を件数と同時に表示するSQL
テーブル一覧を件数と同時に表示するSQLは以下の通りです。COUNT()を利用しないと件数が取れないので、SQL1本では取得できないためPL/SQLで解決します。
テーブル一覧を件数と同時に表示するSQLは以下の通りです。
*目次
#contents()
*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直後であれば、NUM_ROWSに値が入ってくるので以下のSQLでも抽出可能です。
*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
;