在查询中如何得到一个数据库中所有表的表名
并依次打开这些表?

解决方案 »

  1.   

    取表名,字段名select   object_name(id)   as   tablename   ,   name   as   fieldname   
      from   syscolumns     
      where     
      id   in   (select   id   from   sysobjects   where   type   =   'u')   
      and   xtype   =   (select   xtype   from   systypes   where   name   = 'char')   
      order   by   tablename   ,   fieldname
      

  2.   

    SELECT 
     表名=case when a.colorder=1 then d.name else '' end,
     字段序号=a.colorder,
     字段名=a.name,
     标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
     主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
      SELECT name FROM sysindexes WHERE indid in(
       SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
      ))) then '√' else '' end,
     类型=b.name,
     占用字节数=a.length,
     长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
     小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
     允许空=case when a.isnullable=1 then '√'else '' end,
     默认值=isnull(e.text,''),
     字段说明=isnull(g.[value],'')
    FROM syscolumns a
     left join systypes b on a.xtype=b.xusertype
     inner join sysobjects d on a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
     left join syscomments e on a.cdefault=e.id
     left join sysproperties g on a.id=g.id and a.colid=g.smallid  
    order by a.id,a.colorder老大的!
      

  3.   


    在查询中如何得到一个数据库中所有表的表名 
    并依次打开这些表?
    -----------------------表多时用游标
    declare T_cursor cursor for
    select
    'select * from '+quotename(Name) from sysobjects where xtype='U'
    declare @s nvarchar(100)
    open  T_cursor
    fetch from T_cursor into @s
    while @@fetch_status=0
    begin
    exec(@s)
    fetch from T_cursor into @s
    end
    close T_cursor
    deallocate T_cursor
    declare @s nvarchar(max)--2005
    set @s=''
    select @s=@s+' select * from '+quotename(Name) from sysobjects where xtype='U'
    exec(@s)
    -- 2000的方法
    declare hcforeach cursor for
    select ' select * from '+quotename(Name) 
    from sysobjects 
    where xtype='U'
    exec sp_MSforeach_worker '?'
      

  4.   

    use db
    go
    select name from sysobjects where xtype='u'
    依次打开?
      

  5.   

    sp_MSforeachtable @command1='select * from ?'
      

  6.   

    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+'select *  from ['+name+'] '
    from (select name from sysobjects where xtype='U')tp
    exec(@sql)
      

  7.   

    sp_msforeachtable 'select ''?'' tablename;select * from ?'
      

  8.   


    use databasenameselect Name from sysobjects where xtype='u'