帶引數的動態 SQL

為了避免注入和轉義問題,應該使用引數執行動態 SQL 查詢,例如:

SET @sql = N'SELECT COUNT(*) FROM AppUsers WHERE Username = @user AND Password = @pass
EXEC sp_executesql @sql, '@user nvarchar(50), @pass nvarchar(50)', @username, @password

第二個引數是查詢中使用的引數列表及其型別,在此列表之後提供將用作引數值的變數。

sp_executesql 將轉義特殊字元並執行 sql 查詢。