0

sql-server 2008 の次の 3 つの違いは何ですか?

#Table_name
##Table_name
@Table_name
4

3 に答える 3

1

MSDNから:データベース識別子(質問に合うように再フォーマットされています)。

識別子の先頭にある特定の記号は、SQLServerでは特別な意味を持っています。

  • @:アットマークで始まる通常の識別子は常にローカル変数またはパラメータを示し、他のタイプのオブジェクトの名前として使用することはできません。
  • :番号記号で始まる識別子は、一時テーブルまたはプロシージャを示します。
  • ##:二重数字記号(##)で始まる識別子は、グローバル一時オブジェクトを示します。番号記号または二重番号記号文字を使用して他のタイプのオブジェクトの名前を開始することもできますが、この方法はお勧めしません。
  • @@:一部のTransact-SQL関数には、記号がdoubleで始まる名前(@@)があります。これらの関数との混同を避けるために、@@で始まる名前は使用しないでください。
于 2013-02-21T16:12:29.120 に答える
0

#table_name-ローカル一時テーブル

  • これは、ユーザーセッションまたは一時テーブルを作成したプロシージャの期間中のみ存在します
  • ユーザーがログオフするか、テーブルを作成した手順が完​​了すると、ローカル一時テーブルは失われます

##table_name-グローバル一時テーブル

  • ユーザーセッションの期間中存在します
  • テーブルを参照する最後のユーザーセッションが切断されると、グローバル一時テーブルが失われます

@Table_name --table -variable-これは、ユーザーセッションの期間中のみ存在します

Temp Table and Table Variable—どちらもTempDBで作成され、メモリでは作成されません

于 2013-02-21T16:19:22.583 に答える
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 に答える