質問: 私は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は特別な構文ですか?それとも、彼らは私を混乱させるだけですか? :)
回答: はい、 `#`はTSQLで重要なことを意味します - そのデータベース/スキーマの`foo`という名前のテーブルは永続的です。 `#foo`という名前のテーブルは一時テーブルです。そのテーブル*はその接続に*のみ存在*し* 、接続が閉じられたりリセットされたりすると削除されます。 `##foo`という名前のテーブルは*グローバルな*一時テーブルであり、どこにでも存在しますが、一時的なものです。これは主にデータをバルクシフトするときに使用されます。 ここで`#t`使用するのは、テーブルがその接続上にのみ存在するようにするためです。テストを簡単に再実行することができます。 また、 `@foo`という名前のテーブルは、 *テーブル変数*または*テーブル値パラメータの*いずれかであり、そのコマンド/ sprocに対してのみ存在します。