データベース -> ORACLE -> PL/SQL

PL/SQLによる全テーブル件数の表示

明示カーソルを使う方法

SET SERVEROUTPUT ON
SET FEEDBACK OFF

DECLARE
  
  -- 動的SQLのカーソルを使うための定義
  -- [構文]: TYPE 型名 IS REF COURSOR; 
  TYPE TABS_T IS REF CURSOR;

  -- [構文]: カーソル変数名 型名
  TABS TABS_T;

  -- カーソル "C_TBL_LIST" を宣言する [構文]: CURSOR カーソル名
  CURSOR C_TBL_LIST IS
      SELECT TABLE_NAME FROM USER_TABLES;

  -- 符号付き整数型
  V_ROWS  PLS_INTEGER;

BEGIN
   FOR R IN C_TBL_LIST LOOP
       -- 動的SQLカーソルのオープン [構文]: OPEN カーソル名 FOR 'SELECT 分'
       OPEN TABS FOR 'SELECT COUNT(*) FROM ' || R.TABLE_NAME;

       -- 結果セットからデータを取り出し、変数に格納する。
            [構文]: FETCH カーソル INTO 変数名;
       FETCH TABS INTO V_ROWS;

       DBMS_OUTPUT.PUT_LINE(R.TABLE_NAME 
                           || RPAD(' ',12-LENGTHB(R.TABLE_NAME))
                           || '= ' 
                           || V_ROWS);
       CLOSE TABS;
   END LOOP;
END;
/

全テーブル件数表示 PL/SQL 実行結果
SQL> @show_tbl_cnt.sql
DEPT        = 4
BONUS       = 0
SALGRADE    = 5
EMP_ORG     = 14
EMP_BK      = 14
EMP         = 14
SQL>




カーソルFORループを使う方法

SET SERVEROUTPUT ON
SET FEEDBACK OFF

DECLARE
  CURSOR CU IS
    SELECT TABLE_NAME テーブル FROM USER_TABLES ORDER BY TABLE_NAME;
  RECCT number;

BEGIN
  FOR CU_REC IN CU LOOP
    EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || CU_REC.テーブル into RECCT;
    DBMS_OUTPUT.PUT_LINE(rpad(cu_rec.テーブル,30) || ' ' || to_char(RECCT,'999,999,999'));
  end loop;
end;
/





      Document-Folder          一覧
HP-UX
HULFT
JAVA
JP1
JavaScript
Linux
MAC
PHP
Perl
Python
Ruby
SOA
Solaris
Unix全般
Windows
XML
エクセル
スタイルシート
セキュリティー
データベース
ネットワーク
パソコン
ブラウザ
プログラム構文
仮想化
          RSS-Folder
ニュース
   アットマーク・アイティ(@IT)
   シンクイット(ThinkIT)
   インターネットコム
   インターネットウォッチ
   日経IT-Pro
   日経パソコン
   CNET Japan
   ZD-NetJapan
   MYCOM
   RBB-Today
ベンダー
   日本IBM
   日本HP
   サンマイクロシステムズ
   NEC
   富士通
   日立
ソフトウェア
   マイクロソフト
   トレンドマイクロ
   オラクル
   サイボウズ
   Mozilla
   野村総合研究所
   (その他ソフトウェア企業)
更新履歴 一覧
 07/08 PERF
プログラム構文
 07/07 PERF
プログラム構文
 06/25 オブジェクトプログラミング2
Perl>サンプル
 07/12 クローン作成
仮想化>vCenter
 07/12 vyatta設定
ネットワーク>vyatta
 07/12 vyattaインストール
ネットワーク>vyatta
 07/12 リポジトリサーバ
Linux>サーバ構築
 07/05 VMwareのインストール
仮想化>VMware
 07/05 PXEブート
仮想化>KVM
 07/01 DHCPでのPXEブート
仮想化>KVM
 06/27 qcow2仮想DISK作成
仮想化>KVM
 06/13 NWの設定
仮想化>VMwareEsxi
 06/13 IPアドレスの変更
仮想化>VMwareEsxi
 06/12 自動ssh
Unix全般>シェル>Bash
 06/12 diffプログラミング
Python
Google