7

我只是从 Dapper“手册”中阅读这个示例:

connection.Execute(@"
  set nocount on 
  create table #t(i int) 
  set nocount off 
  insert #t 
  select @a a union all select @b 
  set nocount on 
  drop table #t", new {a=1, b=2 })
   .IsEqualTo(2);

#t 是某种特殊的语法吗?还是他们只是为了迷惑我?:)

4

1 回答 1

12

是的,#这意味着 TSQL 中的一些重要的东西——一个名为foo永久的表,对于那个 db/schema。一个名为的表#foo是一个临时表 - 它只存在于该连接,并在连接关闭或重置时被删除。一个名为的表##foo是一个全局临时表,它存在于任何地方,但它是临时的。这主要用于批量移动数据时。

这里的使用#t是为了让表只存在于那个连接上,所以我们可以简单地重新运行测试。

此外,名为table-variable@footable-valued-parameter的表仅存在于该命令/存储过程中。

于 2012-10-12T13:29:55.193 回答