Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Trợ giúp về cú pháp sp_executesql của Sql Server 2008 - Tôi nghĩ rằng trích dẫn của tôi không đúng

SQL động không hoạt động như vậy.
Bạn vẫn không thể chuyển các tham số cho một chuỗi động sẽ được sử dụng thay cho tên đối tượng.

Bạn phải tự tạo chuỗi truy vấn, thay thế thủ công @DBName với giá trị thực tế. Tuy nhiên, bạn có thể sử dụng một tham số ở phía bên phải của phương trình mà không cần bất kỳ dấu ngoặc kép nào.

Ngoài ra, khi đặt tên đối tượng vào truy vấn, hãy luôn sử dụng QUOTENAME hàm số. Nó sẽ thoát khỏi tên một cách chính xác để không có hành vi chèn sql hoặc hành vi không mong muốn do các ký tự nhất định trong tên của đối tượng gây ra.

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. ssrs 2008 thông số xếp tầng

  2. Hàm IndexOf trong T-SQL

  3. Không thể kết nối với localDB trong VS2012 - Đã xảy ra lỗi liên quan đến mạng hoặc trường hợp cụ thể khi thiết lập kết nối với SQL Server ...

  4. Sự cố khi đếm tần suất mục trên T-SQL

  5. Cái nào nhanh hơn COALESCE HOẶC ISNULL?