一時テーブルは、DB への現在の接続が削除された場合、または DROP TABLE #columntable
で明示的に削除された場合にのみ、クエリの最後に自動的に削除されません。
クエリの開始時にテーブルの存在をテストするか、最後に常にテーブルを削除します (できれば両方)
編集:Matrin がコメントで述べたように、これは実際には解析エラーです。 SQL を実行したときと同じように解析すると、同じエラーが発生します。
それをテストするために、クエリを分割して試しました:
if exists (select 1 from emp where id = 6)
create table #columntable (newcolumns varchar(100))
GO
if not exists (select 1 from emp where id = 6)
create table #columntable (oldcolumns varchar(100))
GO
パーサーはこれで満足です。興味深いことに、非一時テーブルを使用するように変更すると、元のクエリは問題なく解析されます (問題が発生することは理解しています。クエリが解析されない理由を知りたかっただけです)。