Pourquoi le # (hashes) dans l'exemple Dapper

c# dapper

Question

Je ne fais que lire cet exemple du "manuel" 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);

Est-ce que le # t est une syntaxe spéciale pour quelque chose? Ou sont-ils juste là pour me confondre? :)

Réponse acceptée

Oui, # signifie quelque chose d'important dans TSQL - une table nommée foo est permanente, pour ce schéma / db. Une table nommée #foo est une table temporaire - elle n'existe que pour cette connexion et est supprimée lorsque la connexion est fermée ou réinitialisée. Une table nommée ##foo est une table temporaire globale , elle existe partout, mais est destinée à être temporaire. Ceci est principalement utilisé lors du déplacement en masse de données.

L'utilisation de #t ici est telle que la table n'existe que sur cette connexion, nous pouvons donc réexécuter le test trivialement.

De plus, une table nommée @foo est soit une variable de table , soit un paramètre de valeur de table , et n'existe que pour cette commande / sproc.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi