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

Nápověda k syntaxi Sql Server 2008 sp_executesql – myslím, že moje uvozovky nejsou správné

Dynamické SQL takto nefunguje.
Stále nemůžete předat parametry dynamickému řetězci, který bude použit místo názvů objektů.

Řetězec dotazu si musíte vytvořit sami a ručně nahradit @DBName se skutečnou hodnotou. Můžete však použít parametr na pravé straně rovnice bez uvozovek.

Při vkládání názvu objektu do dotazu také vždy použijte QUOTENAME funkce. Správně unikne názvu, takže nedochází k vkládání SQL nebo nežádoucímu chování způsobenému určitými znaky v názvu objektu.

SET @sql = N' IF EXISTS (SELECT NAME FROM master.sys.databases sd where name = @DBName)
BEGIN
  ALTER DATABASE ' + quotename(@DBName, '[') + N' SET  RESTRICTED_USER WITH ROLLBACK IMMEDIATE
  ALTER DATABASE ' + quotename(@DBName, '[') + N' SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
  DROP DATABASE ' + quotename(@DBName, '[') + N' 
END';


  1. Zaregistrujte se a spusťte PostgreSQL 9.0 jako službu Windows

  2. Jak najít závislosti cizího klíče na SQL Server?

  3. Existuje řešení pro definování jedinečného omezení, které považuje hodnoty NULL za odlišné?

  4. INET_ATON() a INET_NTOA() v PHP?