sql server中关于临时表的问题?

来源:百度知道 编辑:UC知道 时间:2024/09/19 16:37:31
小弟最近在学习sql server的存储过程
关于临时表的问题
declare @tab1 table()可以定义临时表
create table #tab1 也可以定义临时表
但是
这两种方式到底有什么区别呢?
还是说在效率方面有差异
希望那个牛人给小弟解释一下
小弟万分感谢.....

以@开头的都是变量,只存在于批处理中,如:
go
declare @a table(id int)
select * from @a
go
这样可以,但下面这样确不行:
go
declare @a table(id int)
go
select * from @a
而以#开头的是临时表,sql会把它存在系统数据库tempdb中,当临时表不用的时候要记得drop table #tab1来删除它,不然它会一直保留到创建它的连接退出为止

#tab1会保存到系统中知道你DROP掉它
@table一旦连接结束即会中止