안녕하세요.
쿼리를 생각해봤는데요,
해당 db내에서, row count가 하나도 없는 table의 이름을 구하고 싶거든요.
구할 방법이 있나요?
아무리 생각해도 제 수준에선 안될거 같거든요.
systable의 건수 조회하는것 말고, 그냥 쿼리짜서 해볼려구요.
if exists(select 1 from sysobjects where type='P' and name = 'proc_check_0_rows') drop proc proc_check_0_rows go
create proc proc_check_0_rows as begin declare cur_check_0_rows cursor for select name from sysobjects where type='U' order by name for read only
declare @tname char(30)
create table #table_list (tname char(30))
open cur_check_0_rows
fetch cur_check_0_rows into @tname
while (@@sqlstatus = 0) begin print "Checking.. [ %1! ]", @tname exec ("if not exists(select * from " +@tname +") insert into #table_list values ('" +@tname +"')" )
fetch cur_check_0_rows into @tname end
close cur_check_0_rows
deallocate cursor cur_check_0_rows
print "" print "* 0 Rows table list" print "-------------------" select * from #table_list
print "%1! Tables has no data rows!", @@rowcount
drop table #table_list end go
exec proc_check_0_rows go 결과 예제는 여기를 참조하세요 --> http://www.iquser.net/bbs/zboard.php?id=com_ase&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=22
도움감사드립니다. 이해하지는 못하겠네요 T-T 공부좀 더 할께요.
1. sysobject의 type이 'U'인걸 커서로 선언한다(U는 user table임)
2. 커서 오픈 해서 data가 존재하지 않으면(if not exist) temp table에 해당 table이름 insert(이거 dynamic sql 잘수행되나요?...버젼이 옜날거(제꺼)는 안되는데요)
3. table이름이 있는동안 loop
이겁니다~~
ASE 버전 12.5.3에서 만들었습니다. Dynamic SQL이 잘 됩니다. 지연님이 쓰시는 ASE 버전은 어떤것인지요?