Solo estoy leyendo esta muestra del "manual" de 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);
¿Son los # t una sintaxis especial para algo? ¿O solo están allí para confundirme? :)
Sí, #
significa algo importante en TSQL: una tabla llamada foo
es permanente, para ese db / schema. Una tabla llamada #foo
es una tabla temporal; solo existe para esa conexión , y se elimina cuando la conexión se cierra o se restablece. Una tabla llamada ##foo
es una tabla temporal global , y existe en todas partes, pero está destinada a ser temporal. Esto se usa principalmente cuando se cambian los datos a granel.
El uso de #t
aquí es para que la tabla solo exista en esa conexión, por lo que podemos volver a ejecutar la prueba trivialmente.
Además, una tabla llamada @foo
es una variable de tabla , o un parámetro de valor de tabla , y solo existe para ese comando / sproc.