0

ストアド プロシージャに一時テーブルがあり、複雑な計算を実行しているため、クエリのタイムアウトが発生しています。使い終わったら落としたい。のように作成しました。

DECLARE @SecondTable TABLE

今、私はそれを使用してドロップすることはできません

drop @SecondTable

実際、私は使用する必要があります

drop #SecondTable

誰かが理由を知っていますか?

4

1 に答える 1

3

私は決して SQL の第一人者ではありませんが、なぜ削除が必要なのですか?

テーブル変数の場合、ストアド プロシージャが終了すると存在しなくなります。

私は実際にあなたにDROP #SecondTableエラーが出ないことに驚いています。そこに一時テーブルをドロップしているため。テーブル変数ではありません。

編集

あなたのコメントに基づいて、私の更新は以下のとおりです。

1.) テーブル変数を使用している場合 ( @SecondTable); その場合、ドロップは必要ありません。SQL Server がこれを処理します。

2.)テーブル自体の削除ではなく、テーブルを使用した計算によってタイムアウトが発生したようです。この場合; テーブル変数の代わりに一時テーブルを使用することをお勧めします。一時テーブルを使用すると、インデックスなどを追加してパフォーマンスを向上させることができるため。テーブル変数はそうではありません。これでも十分でない場合。クエリのタイムアウト期間を長くする必要がある場合があります。

3.) SQL の場合。テーブル変数 ( @SecondTable) と一時テーブル ( #SecondTable) は 2 つの完全に異なるものです。テーブル変数一時テーブルについては、MSDN のドキュメントを参照してください。

于 2012-12-18T17:36:46.893 に答える