CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

表变量问题

楼主lalakid(梦想总是那么美好……)2006-03-14 11:09:54 在 MS-SQL Server / 基础类 提问

表变量是否像表一样拥有表名,列名这样的属性呢,如果有的话怎么引用呢  
  表变量的内存是怎么分配的,是什么样的数据结构  
  谢谢^^^^^ 问题点数:100、回复次数:13Top

1 楼happyflystone(无枪的狙击手)回复于 2006-03-14 11:12:38 得分 10

table   变量的行为类似于局部变量,有明确定义的作用域。该作用域为声明该变量的函数、存储过程或批处理。    
  在其作用域内,table   变量可像常规表那样使用。该变量可应用于   SELECT、INSERT、UPDATE   和   DELETE   语句中用到表或表的表达式的地方。但是,table   不能用在下列语句中:  
   
  INSERT   INTO   table_variable   EXEC   存储过程。  
   
  SELECT   select_list   INTO   table_variable   语句。  
   
  在定义   table   变量的函数、存储过程或批处理结束时,自动清除   table   变量。  
   
  在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。  
   
   
  涉及表变量的事务只在表变量更新期间存在。这样就减少了表变量对锁定和记录资源的需求。    
  不支持在表变量之间进行赋值操作。另外,由于表变量作用域有限,并且不是持久数据库的一部分,因而不受事务回滚的影响。  
  Top

2 楼wgsasd311(自强不息)回复于 2006-03-14 11:17:19 得分 10

表变量是否像表一样拥有表名,列名这样的属性呢,如果有的话怎么引用呢  
  ==>eg.  
  declare   @tbname   table   (id   int,colname   int)  
  select   *   from   @tbname  
  表变量的内存是怎么分配的,是什么样的数据结构  
  ==>像数组一样分配在一块连续的内存块,比如上面的表变量分配就相当2维数组变量  
  Top

3 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2006-03-14 11:27:17 得分 25

表变量没有表名,直接使用变量名,有列名属性。Top

4 楼lalakid(梦想总是那么美好……)回复于 2006-03-14 12:45:12 得分 0

如果我想获取一个表变量的列属性,怎么弄啊,谢谢  
  就像SP_HELP       TABLE一样获取表的列  
  或者像SELECT   NAME   FROM   SYSCOLUMNS   WHERE   ID   =   OBJECT_ID(表)Top

5 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2006-03-14 12:48:46 得分 0

表变量是用户自己声明的,列属性自然是已知的。Top

6 楼lalakid(梦想总是那么美好……)回复于 2006-03-14 12:55:29 得分 0

呵呵,这个倒也是,我只是想弄明白表变量是怎么实现的,和表有多大的区别,和其他变量有什么地方不一样Top

7 楼lalakid(梦想总是那么美好……)回复于 2006-03-14 13:41:44 得分 0

自己顶一下先,呵呵Top

8 楼lalakid(梦想总是那么美好……)回复于 2006-03-14 16:00:04 得分 0

再顶一下Top

9 楼lsqkeke(可可)回复于 2006-03-14 16:05:43 得分 25

如果我想获取一个表变量的列属性,怎么弄啊,谢谢  
  就像SP_HELP       TABLE一样获取表的列  
  或者像SELECT   NAME   FROM   SYSCOLUMNS   WHERE   ID   =   OBJECT_ID(表)  
  ------------------------------  
  对表变量,没有这样的系统存储过程或函数来直接获得Top

10 楼zjcxc(邹建)回复于 2006-03-14 20:17:34 得分 30

表变量和具有大多数普通表的特性:  
  1.   有确定的结构  
  2.   可以定义默认值/约束等create   table   语法支持的定义  
  3.   对表的数据操作语言(select/delete/update/insert),   同样适用于表变量  
   
  与表不同的:  
  1.   只能在定义表变量的时候指定结构,   定义后不能修改.  
        因此你不能把alter   table作用于表变量  
        同样,   你不能为表变量创建索引  
  2.   作用域只在定义它的过程有效,   定义它的过程结束则自动消失.  
  3.   直接在使用内存存储数据  
        因此,   大数据量使用表变量是不合适的  
  4.   无法获得其结构属性Top

11 楼aniude(重返荣耀)回复于 2006-03-14 22:02:05 得分 0

MarkTop

12 楼lalakid(梦想总是那么美好……)回复于 2006-03-14 23:43:39 得分 0

我靠,老大终于来了,谢谢……结贴了Top

13 楼lengfeng8866(公孙恋雪(专心学习WEB开发))回复于 2006-03-23 09:06:56 得分 0

zjcxc老大总是会做一些总结性的发言。 呵呵,收藏!Top

相关问题

  • 表变量问题
  • 怎么用变量去表示变量
  • 急!update 表变量问题@@@@
  • 当表名为变量时
  • js小问题,怎么用变量来表示变量名
  • 表变量用哪里的空间?
  • 报表中怎么加入变量??
  • 能不能将表名作为变量?
  • 接收表单变量的问题
  • 表单提交变量名杂了?

关键词

  • 属性
  • 存储过程
  • 函数
  • 语句
  • 内存
  • 结构
  • 数据
  • 变量
  • 表
  • 作用域

得分解答快速导航

  • 帖主:lalakid
  • happyflystone
  • wgsasd311
  • libin_ftsafe
  • lsqkeke
  • zjcxc

相关链接

  • SQL Server类图书

广告也精彩

反馈

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