sql变量表
① sql 表变量 的定义
你可以用临时表
select top 0 * into #table from table
那就没办法了,只能你自己一个一个写了,字段少还好说,要是多的话
你就在你原表上点击生成一个脚本往方法里粘贴吧
② 表名为变量的sql插入语句
使用exec(sql语句)
例:使用变量拼接SQL语句,然后用exec运行
declare @table varchar(200)
declare @sql varchar(200)
set @table = 'aaa'
set @sql='select * from '+@table
exec(@sql)
例中的变量@table 即传递表名
sql='select * from '+@table 即 select * from aaa
③ 表名为变量的SQL查询
一个语句可能比较难实现,需要考虑使用存储过程或多条SQL语句,
呵呵,希望能有帮助,^_^
④ 在sql Server,临时表和表变量之间的区别
表变量在SQL Server 2000中首次被引入。表变量的具体定义包括列定义,列名,数据类型和约束。而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约束不能在表变量中使用)。定义表变量的语句是和正常使用Create Table定义表语句的子集。只是表变量通过DECLARE @local_variable语句进行定义。
表变量的特征:
表变量拥有特定作用域(在当前批处理语句中,但不在任何当前批处理语句调用的存储过程和函数中),表变量在批处理结束后自动被清除。
表变量较临时表产生更少的存储过程重编译。
针对表变量的事务仅仅在更新数据时生效,所以锁和日志产生的数量会更少。
由于表变量的作用域如此之小,而且不属于数据库的持久部分,所以事务回滚不会影响表变量。
虽然表变量是一个变量,但是其不能赋值给另一个变量。
check约束,默认值和计算列不能引用自定义函数。
不能为约束命名。
不能Truncate表变量。
不能向标识列中插入显式值(也就是说表变量不支持SET IDENTITY_INSERT ON)
表变量可以在其作用域内像正常的表一样使用。更确切的说,表变量可以被当成正常的表或者表表达式一样在SELECT,DELETE,UPDATE,INSERT语句中使用,但是表变量不能在类似"SELECT select_listINTOtable_variable"这样的语句中使用。而在SQL Server2000中,表变量也不能用于INSERTINTOtable_variable EXEC stored_procere这样的语句中。
表变量不能做如下事情:
⑤ SQL怎么在查询变量表中的值
动态SQL拼接,然后Exec执行就可以了
declare @sql varchar(4000)
select @sql='select * from TABLE'+cast(year(getdate()) as varchar(4))
exec @sql
⑥ sql server 用变量定义表名,能够查询
set@sql='select*from'+@table
print@sql
exec@sql--执行SQL
⑦ sql临时表表变量的使用方法与什么时候用最好
临时表、表变量的比较
1、临时表
临时表包括:以#开头的局部临时表,以##开头的全局临时表。
a、存储
不管是局部临时表,还是全局临时表,都会放存放在tempdb数据库中。
b、作用域
局部临时表:对当前连接有效,只在创建它的存储过度、批处理、动态语句中有效,类似于C语言中局部变量的作用域。
全局临时表:在所有连接对它都结束引用时,会被删除,对创建者来说,断开连接就是结束引用;对非创建者,不再引用就是结束引用。
但最好在用完后,就通过drop table 语句删除,及时释放资源。
c、特性
与普通的表一样,能定义约束,能创建索引,最关键的是有数据分布的统计信息,这样有利于优化器做出正确的执行计划,但同时它的开销和普通的表一样,一般适合数据量较大的情况。
有一个非常方便的select ... into 的用法,这也是一个特点。
2、表变量
a、存储
表变量存放在tempdb数据库中。
b、作用域
和普通的变量一样,在定义表变量的存储过程、批处理、动态语句、函数结束时,会自动清除。
c、特性
可以有主键,但不能直接创建索引,也没有任何数据的统计信息。表变量适合数据量相对较小的情况。
必须要注意的是,表变量不受事务的约束,