表变量问题
表变量是否像表一样拥有表名,列名这样的属性呢,如果有的话怎么引用呢
表变量的内存是怎么分配的,是什么样的数据结构
谢谢^^^^^
问题点数: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




