Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bantuan sintaks Sql Server 2008 sp_executesql - Saya pikir kutipan saya tidak benar

SQL dinamis tidak bekerja seperti itu.
Anda masih tidak dapat meneruskan parameter ke string dinamis yang akan digunakan sebagai pengganti nama objek.

Anda harus membuat string kueri sendiri, secara manual mengganti @DBName dengan nilai sebenarnya. Namun, Anda dapat menggunakan parameter di sisi kanan persamaan, tanpa tanda kutip.

Selain itu, saat memasukkan nama objek ke dalam kueri, selalu gunakan QUOTENAME fungsi. Ini akan keluar dari nama dengan benar sehingga tidak ada injeksi sql atau perilaku yang tidak diinginkan yang disebabkan oleh karakter tertentu dalam nama objek.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Pivot Table dinamis

  2. Serial tanggal dalam SQL?

  3. COS() Contoh di SQL Server

  4. Hubungkan SAP IQ ke SQL Server

  5. MS SQL Server - Kapan KURSOR bagus?