0

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

#Table_name
##Table_name
@Table_name
4

3 回答 3

1

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

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

  • @:以 at 符号开头的常规标识符始终表示局部变量或参数,不能用作任何其他类型对象的名称。
  • #:以数字符号开头的标识符表示临时表或过程。
  • ##:以双数字符号 (##) 开头的标识符表示全局临时对象。尽管可以使用数字符号或双数字符号字符来开始其他类型对象的名称,但我们不推荐这种做法。
  • @@:某些 Transact-SQL 函数的名称以双 at 符号 (@@) 开头。为避免与这些函数混淆,您不应使用以@@ 开头的名称。
于 2013-02-21T16:12:29.120 回答
0

看到这个问题

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

#table = temp table tied to the spid
##table = global temp table
@table = table variable
于 2013-02-21T16:11:59.863 回答
0

#table_name -本地临时表

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

##table_name -全局临时表

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

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

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

于 2013-02-21T16:19:22.583 回答