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

其实很简单,相对于SQL 2000改了sys.all_objects和sys.columns

 

declare @tblname varchar(200)

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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值