sql >> Databáze >  >> RDS >> Sqlserver

V databázi již existuje objekt s názvem '#columntable'

Dočasné tabulky nejsou automaticky zrušeny na konci dotazu, pouze když je zrušeno aktuální připojení k DB nebo je explicitně odstraníte pomocí DROP TABLE #columntable

Buď otestujte existenci tabulky na začátku dotazu, nebo ji vždy smažte na konci (nejlépe obojí)

EDIT:Jak řekl Matrin ve svém komentáři, toto je ve skutečnosti chyba analýzy. Pokud analyzujete pouze SQL, dostanete stejnou chybu jako při jeho spuštění.

Abych to otestoval, rozdělil jsem váš dotaz a zkusil:

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

Analyzátor je s tím spokojený. Je zajímavé, že pokud přejdete na použití nedočasných tabulek, původní dotaz analyzuje v pořádku (uvědomuji si problémy, které by to způsobilo, jen mě zajímalo, proč se dotaz neanalyzuje).



  1. Skript se nepřihlásí

  2. Vytvořte Spark Dataframe z SQL Query

  3. SELECT COUNT(*) - vrátí 0 spolu se seskupenými poli, pokud neexistují žádné odpovídající řádky

  4. Android :Chyba Sqlite - (1) blízko null:chyba syntaxe