Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

W bazie danych istnieje już obiekt o nazwie '#columntable'

Tabele tymczasowe nie są automatycznie usuwane na końcu zapytania, tylko wtedy, gdy bieżące połączenie z bazą danych jest usuwane lub jawnie usuwasz je za pomocą DROP TABLE #columntable

Przetestuj istnienie tabeli na początku zapytania lub zawsze usuń ją na końcu (najlepiej oba)

EDYCJA:Jak powiedział Matrin w swoim komentarzu, jest to w rzeczywistości błąd analizy. Otrzymasz ten sam błąd, jeśli tylko przeanalizujesz kod SQL, tak jak podczas jego wykonywania.

Aby to sprawdzić, podzieliłem Twoje zapytanie i spróbowałem:

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

Parser jest z tego zadowolony. Co ciekawe, jeśli zmienisz na używanie tabel innych niż tymczasowe, oryginalne zapytanie analizuje się dobrze (zdaję sobie sprawę z problemów, które mogą stworzyć, chciałem tylko dowiedzieć się, dlaczego zapytanie nie zostało przeanalizowane).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie działa szybko w Query Analyzer, ale wolno w aplikacji C#

  2. Jak używać sp_send_dbmail do wysyłania wielu zapytań?

  3. Nieprawidłowa składnia w pobliżu „LIMIT” przy użyciu mssql

  4. Zapytanie DateTime tylko rok w SQL Server

  5. Nowe wydanie:pakiet dostrajania Spotlight 7.1.9