带参数的动态 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 查询。