を考える:ストアドプロシージャの内部一時テーブルを削除した後に再作成することはできますか?
コード:
はselect bleh
into #tblTemp
from FunctionThatReturnsTable('some','params')
-- do some stuff
drop table #tblTemp
-- Error on this command:
-- 'There is already an object named '#tblTemp' in the database.'
select bleh
into #tblTemp
from FunctionThatReturnsTable('some','other params')
問題:
私は、この一時テーブルを再作成することはできません。私の回避策は、#tmpTable1、#tmpTable2、#tempTable3などを使用することです。これを回避する方法はありますか?毎回1つのテンポラリテーブルを使用するだけでいいです。
そうでない場合、これはなぜですか?
で同じのケーススタディをご覧ください。 #tempテーブル名? #tempテーブルを削除せずに、特定の目的ごとに別の名前を使用すると、tempdbでスキーマの動作が改善されることをお勧めします。あなたのケースでこれは当てはまるかもしれないし、そうでないかもしれないが、同じ名前を何度も何度も何度も繰り返し使用することのメリットはない。 –
@AaronBertrand私は、変数を再利用するのが最良ではないことに同意しますが、毎回同じ関数から同じ列を引き出しています。あまりにも細かいところまで行くと、同じ変数名を保つだけで意味がありました。 答えでこれができない理由を教えてください。もしそうなら、私はupvoteと答えとしてマークします。 – DJTripleThreat
毎回同じカラムを持つ同じ一時テーブルを使用している場合は、 'delete'または' truncate'を使ってテーブルをクリアし、その後の 'select into'ステートメントを既存のテーブルに' insert'するように変更してください。 – HABO