Arn*_*shn 109
#table 指的是本地(仅对创建它的用户可见)临时表.
##table 指的是全局(对所有用户可见)临时表.
@variableName 是指一个变量,它可以根据其类型保存值.
干杯
小智 7
#和##表是临时数据库中表示的实际表.这些表可以具有索引和统计信息,并且可以在会话中跨越sprocs访问(在全局临时表的情况下,它可以跨会话使用).
@table是一个表变量.
更多信息:http://www.sqlteam.com/article/temporary-tables
CREATE TABLE #t
Run Code Online (Sandbox Code Playgroud)
创建一个仅在该 CONNECTION 上和期间可见的表,创建另一个连接的同一用户将无法从另一个连接看到表 #t。
CREATE TABLE ##t
Run Code Online (Sandbox Code Playgroud)
创建一个对其他连接可见的临时表。但是当创建连接结束时,该表将被删除。
我会关注#table和@table之间的区别.## table是一个全局临时表,对于使用SQL Server超过10年的记录,我还没有遇到过有效的用例.我确信有些存在,但对象的性质使它高度无法使用恕我直言.
@marc_s对@whiner的响应是绝对正确的:表变量总是存在于内存中是一种流行的神话.实际上,表变量转到磁盘并像临时表一样运行是很常见的.
无论如何,我建议按照@Astander指出的链接阅读这些差异.大多数差异都涉及对@table变量不能做的限制.