2009年10月28日水曜日

[SQL]SQLServerのDB内に存際する全テーブルの件数取得(T-SQL) (その2)

GDD Blog: [SQL]SQLServerのDB内に存際する全テーブルの件数取得(T-SQL)では真っ当?に全テーブルの件数を取する。をやってみましたが、今度、sp_MSforeachtableという便利な関数?を見つけましたので、こちらで応用をやってみました。コードはこんな感じ。

--一時変数(結果格納用)
CREATE TABLE #TEMP_TABLE(
     T_NAME varchar(128)
    ,T_CNT int
)

--sp_MSforeachtableでユーザテーブル全部をループ処理
EXEC sp_MSforeachtable  @command1 ='
    INSERT INTO #TEMP_TABLE 
    SELECT 
        ''?'' as T_NAME
       ,COUNT(*) as T_CNT 
    FROM ?
'


--実行結果を表示する
SELECT * FROM #TEMP_TABLE ORDER BY T_NAME
DROP TABLE #TEMP_TABLE


?の部分がテーブル名に置き換わるので、SELECTの項目に入れており、かつ、FROMのテーブル名になるようにしてみました。

尚、このての関数でSP_MSForEachDBというのあります。関数名からもわかるとおり、こちらはテーブルではなく全DBをループして処理するようです。

0 件のコメント :