sql >> データベース >  >> RDS >> Sqlserver

データベースには「#columntable」という名前のオブジェクトが既に存在します

    一時テーブルは、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
    

    パーサーはこれで満足です。興味深いことに、非一時テーブルを使用するように変更すると、元のクエリは問題なく解析されます (問題が発生することは理解しています。クエリが解析されない理由を知りたかっただけです)。



    1. ORDER BY および UNION を使用した ORACLE クエリ

    2. T-SQLを使用してSQLServerのテーブルの列権限を取得します:sp_column_privileges

    3. org.postgresql.util.PSQLException:エラー:トランザクション間の読み取り/書き込みの依存関係のため、アクセスをシリアル化できませんでした

    4. 標準入力を使用してSwift3.0でプロセスを実行する方法