Sample: SQL 2008循環所有表和所有列

其實很簡單,相對於SQL 2000改了sys.all_objects和sys.columns

 

declare @tblname varchar(200)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

declare @object_id   int

declare tbl_cursor CURSOR for

select name,object_id from sys.all_objects where type='u'

 

open tbl_cursor

 

FETCH NEXT FROM tbl_cursor

INTO @tblname,@object_id

 

while @@FETCH_STATUS = 0

Begin

 

    declare @str varchar(8000)

    declare @selectstr varchar(2000)

    set @selectstr=''

    set @str='INSERT INTO '+ @tblname +'('

    --print @tblname,@object_id

    declare @colname varchar(200)

    declare col_cursor CURSOR for

    select name from sys.columns where object_id=@object_id order by column_id

    open col_cursor

    FETCH NEXT FROM col_cursor INTO @colname

    WHILE @@FETCH_STATUS = 0

    BEGIN

       set @str=@str+@colname+','

       --Print @str

       set @selectstr=@selectstr+@colname+','

       --Print @colname

       FETCH NEXT FROM col_cursor INTO @colname

    END

    close col_cursor

    deallocate col_cursor

   

    set @str=substring(@str,0,len(@str))

    set @selectstr=substring(@selectstr,0,len(@selectstr))

    set @str=@str+') SELECT ' +  @selectstr +' FROM '+ @tblname

    Print @str

   

    fetch next from tbl_cursor into @tblname,@object_id 

End

 

close tbl_cursor

deallocate tbl_cursor

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章