[SQLServer]入れ子のカーソルを使って、件数が1件以上のテーブル名一覧を作る
やりたいこと
レコードの件数が1件以上存在するテーブル名の一覧が作りたい。
やっていること
対象にしたいテーブル名の一覧を作成して、その中の件数が1以上の場合に出力
※呼び出し側でログなどに出力してしまえば、リストが作れる
DECLARE @table_name NVARCHAR(128);
DECLARE @rec_count int;
DECLARE CUR_TABLE CURSOR FOR
select name from sys.tables where name like 'T\_%' ESCAPE '\'
union all
select name from sys.tables where name like 'D\_%' ESCAPE '\'
union all
select name from sys.tables where name like 'M\_%' ESCAPE '\'
union all
select name from sys.tables where
name not like 'TMP\_%' ESCAPE '\' and
name not like 'TT\_%' ESCAPE '\' and
name not like 'PT\_%' ESCAPE '\' and
name not like 'W\_%' ESCAPE '\' and
name not like 'T\_%' ESCAPE '\' and
name not like 'D\_%' ESCAPE '\' and
name not like 'M\_%' ESCAPE '\' and
name not like 'I\_%' ESCAPE '\' and
name not like 'G\_%' ESCAPE '\' and
name not like 'Z\_%' ESCAPE '\' ;
OPEN CUR_TABLE;
FETCH NEXT FROM CUR_TABLE INTO @table_name;
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('DECLARE cr2 CURSOR FOR select count(*) from ' + @table_name)
OPEN cr2
FETCH NEXT FROM cr2 INTO @rec_count
CLOSE cr2
DEALLOCATE cr2
if @rec_count > 0 PRINT @table_name
FETCH NEXT FROM CUR_TABLE INTO @table_name;
END
CLOSE CUR_TABLE;
DEALLOCATE CUR_TABLE;
件数をどうやって取得して判定すりゃいいんじゃいと悩んだ。
<参考>
https://ameblo.jp/g-pinchan-new/entry-11496798995.html
https://www.atmarkit.co.jp/ait/articles/0209/03/news001.html
Author And Source
この問題について([SQLServer]入れ子のカーソルを使って、件数が1件以上のテーブル名一覧を作る), 我々は、より多くの情報をここで見つけました https://qiita.com/ryo_naka/items/4d325c2579e1a9641d08著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .