[mssql]특정 디비의 모든 테이블에 row수 카운트하기

select count(*) from 테이블명
요 sql문을 테이블수 만큼 돌릴수도 있다.
물론 한 50개만 넘어가도 중간에 포기할테지만..
요럴때 요긴하게 쓸수 있는 프로시저를 만들자.
요걸 이용해서 다양하게 응용할수 있을것이다.
특정날짜의 특정 테이블에 대한 카운트 수등등..

create proc pGetRowCount as
set nocount on — 결과 메시지를 뿌리지 않는다.
declare curGetTableName INSENSITIVE CURSOR — 인텐시브 커서를 선언 템프디비를 만들어서 빠름
for
select table_name from information_schema.tables
where table_type = ‘base table’
for read only — 읽기전용으로

open curGetTableName — declare에서 정의한 커서를 연다.

declare @tblName varchar(30), @sql varchar(100)

fetch from curGetTableName into @tblName — 커서에서 행을 얻어 변수에 넣는다.

while @@FETCH_STATUS = 0 — 0이면 성공적으로 가져온것
begin
select @sql = ‘select count(*) from ['+@tblName+']‘
select @sql
exec (@sql)
fetch from curGetTableName into @tblName
end

close curGetTableName
deallocate curGetTableName — 커서가 사용하던 자원을 풀어준다.

Comments

Powered by Facebook Comments

댓글 남기기

당신의 이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.

*

다음의 HTML 태그와 속성을 사용할 수 있습니다: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>