CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

根据表名如何得到表

楼主keyanshang(bigbig.world)2005-03-03 12:51:33 在 MS-SQL Server / 应用实例 提问

在存储过程中,已知一个表的名字"Table1",如何得到这个表,进而操作这个表?  
  问题点数:10、回复次数:11Top

1 楼631799(杭州工人)回复于 2005-03-03 12:57:12 得分 5

select   *   from   Table1   --得到记录  
  select   column_name   from   information_schema.columns   where   table_name='Table1'--得到列名  
   
  --得到更多详细信息  
  SELECT    
  表名=case   when   a.colorder=1   then   d.name   else   ''   end,  
  表说明=case   when   a.colorder=1   then   isnull(f.value,'')   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.xusertype=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      
  left   join   sysproperties   f   on   d.id=f.id   and   f.smallid=0  
  --where   d.name='要查询的表'         --如果只查询指定表,加上此条件  
  order   by   a.id,a.colorder  
  Top

2 楼keyanshang(bigbig.world)回复于 2005-03-03 13:20:30 得分 0

TO:   631799(杭州工人)    
      我的意思是:在存储过程中得到一个字符串“Table1“,那么通过这个字符串如何得到一个Table变量AA,使得AA就是表"Table1"Top

3 楼jiang130(Hong)回复于 2005-03-03 13:24:33 得分 0

declare   @table   varchar(20)  
  select   @table=object_id('table1')  
   
  exec('select   *   from   '+@table)Top

4 楼jiang130(Hong)回复于 2005-03-03 13:26:35 得分 0

更正:  
  你已知道表名  
  exec('select   *   from   '+'table1')  
  就可以了  
  Top

5 楼keyanshang(bigbig.world)回复于 2005-03-03 13:31:11 得分 0

declare   @table   varchar(20)  
  select   @table=object_id('table1')  
   
  select   *   from   @table   不行吗?  
  我想要这种的,exec('select   *   from   '+'table1')  
  感觉像拼字符串,用起来也不十分方便Top

6 楼keyanshang(bigbig.world)回复于 2005-03-03 13:40:45 得分 0

这个问题谁能帮帮我呀,对我意义重大,可以减少很多工作  
  Top

7 楼keyanshang(bigbig.world)回复于 2005-03-03 14:01:55 得分 0

求高手帮忙啊Top

8 楼yesyesyes()回复于 2005-03-03 15:30:28 得分 0

一般都是用拼字符串的方法  
  或者你也可以定义一个表变量函数,也行的Top

9 楼keyanshang(bigbig.world)回复于 2005-03-03 16:07:29 得分 0

To   yesyesyes()   ,具体如何操作,请用代码指教Top

10 楼yesyesyes()回复于 2005-03-03 17:01:25 得分 0

不过好像建函数的语句还得拼字符串,还是直接拼吧Top

11 楼lingdian000(lingdian)回复于 2005-03-03 17:18:31 得分 5

declare   @tb   table   (  
  [id]   [int]     NOT   NULL   ,  
  [tran_code]   [varchar]   (10)     )  
  insert   into   @tb    
  select   id,tran_code   from   mytran  
   
  select   *   from   @tbTop

相关问题

  • 如何根据视图得到创建它所用到的表
  • 如何得到这个表
  • 请教我如何得到库中所有的自定义的表名?又如何根据一个表名得到表中所有字段的信息??谢谢
  • 如何得到报表的总页数?
  • 如何得到字体列表
  • 如何得到一个表a的外键
  • 如何用脚本得到表结构?
  • 如何得到這樣的表?
  • 如何动态得到form表名
  • 如何得到两个表的差异?

关键词

  • 表
  • 字符串
  • 得到
  • columnproperty
  • colorder
  • isnull
  • colid
  • join
  • tb
  • table

得分解答快速导航

  • 帖主:keyanshang
  • 631799
  • lingdian000

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo