sql-server 2008,表之间的差异

时间:2013-02-21 16:08:30

标签: sql database sql-server-2008

sql-server 2008中的以下3有什么区别?

#Table_name
##Table_name
@Table_name

3 个答案:

答案 0 :(得分:1)

来自MSDN: Database Identifiers(重新格式化以更好地适应问题)。

标识符开头的某些符号在SQL Server中具有特殊含义。

  • @ :以at符号开头的常规标识符始终表示局部变量或参数,不能用作任何其他类型对象的名称。
  • :以数字符号开头的标识符表示临时表或过程。
  • ## :以双号标记(##)开头的标识符表示全局临时对象。虽然数字符号或双数字符号可用于开始其他类型对象的名称,但我们不建议这样做。
  • @@ :某些Transact-SQL函数的名称以符号(@@)的double开头。为避免与这些功能混淆,不应使用以@@。
  • 开头的名称

答案 1 :(得分:0)

查看此问题

https://stackoverflow.com/a/64891/886591

#table = temp table tied to the spid
##table = global temp table
@table = table variable

答案 2 :(得分:0)

#table_name - 本地临时表

  • 仅在用户会话或创建临时表的过程
  • 期间存在
  • 当用户注销或创建表的过程完成时,本地临时表将丢失

## table_name - 全局临时表

  • 在用户会话期间存在
  • 当引用该表的最后一个用户会话断开连接时, 全局临时表丢失

@Table_name - 表变量 - 它仅在用户会话期间存在

Temp Table and Table Variable - 两者都是在TempDB中创建的,而不是在内存中创建的