全テーブルのレコード数を出力する


http://laurentschneider.com/wordpress/2007/04/how-do-i-store-the-counts-of-all-tables.html
の記事によると


全テーブルのレコード数を出力するには以下のSQLで可能らしいです。

SELECT
  table_name,
  TO_NUMBER(
    extractvalue(
      xmltype(
        dbms_xmlgen.getxml('SELECT COUNT(*) c FROM '||table_name))
      ,'/ROWSET/ROW/C')) count
FROM user_tables;


しかし、この程度であればPL/SQLを使用して、下記のように書けばいいと思います。

DECLARE
  CURSOR c1 IS SELECT table_name, CONSTRAINT_name FROM user_constraints WHERE index_name IS NOT NULL;
BEGIN
  FOR r1 IN c1 LOOP
    SELECT r1.table_name AS table_name ,COUNT(*) AS count FROM r1.table_name;
  END LOOP;
END;
/

PL/SQLを習得する方が、いろいろと応用がきくと思うのですが、世の中的にPL/SQLは受け入れられてないんでしょうか。。