在MySQL中,我们可以使用PreparedStatement
生成预准备语句。
我想在SQL脚本中实现相同的功能。如何创建预准备语句以及如何执行它?请举例说明。
答案 0 :(得分:14)
对于大多数动态SQL,我建议使用sp_executesql
而不是exec
。 sp_executesql
类似于MySQL的EXECUTE...USING
,因为它可以接受参数而不仅仅是连接字符串,因此可以很好地防御SQL注入。 sp_executesql
还允许SQL Server重用查询计划以进行更有效的查询。这是一个例子:
exec sp_executesql
@statement = N'select * from sys.databases where name = @dbname or database_id = @dbid',
@parameters = N'@dbname sysname, @dbid int',
@dbname = N'master',
@dbid = 1
可以找到更多信息和示例here。