sql >> Database >  >> RDS >> Sqlserver

Sql Server 2008 sp_executesql syntaxis hulp - ik denk dat mijn aanhalingstekens niet correct zijn

Dynamische SQL werkt niet zo.
U kunt nog steeds geen parameters doorgeven aan een dynamische tekenreeks die wordt gebruikt in plaats van objectnamen.

U moet de queryreeks zelf samenstellen en handmatig @DBName vervangen met werkelijke waarde. U kunt echter een parameter aan de rechterkant van een vergelijking gebruiken, zonder aanhalingstekens.

Gebruik bij het invoeren van een objectnaam in een query ook altijd de QUOTENAME functie. Het zal correct ontsnappen aan de naam, dus er is geen sql-injectie of ongewenst gedrag veroorzaakt door bepaalde tekens in de naam van een object.

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. Hoe LocalTimeStamp() werkt in PostgreSQL

  2. Selecteer waar de eerste letter in een bereik ( PostgreSQL )

  3. Vervang een tekenreeks door een andere tekenreeks uit een lijst, afhankelijk van de waarde

  4. Sla php datetime op in mysql-database