我想在一个动态SQL查询中设置表名。对于参数,我尝试了以下方式并取得了成功:
/* Using sp_executesql */
/* Build and Execute a Transact-SQL String with a single parameter
value Using sp_executesql Command */
/* Variable Declaration */
DECLARE @EmpID AS SMALLINT
DECLARE @SQLQuery AS NVARCHAR(500)
DECLARE @ParameterDefinition AS NVARCHAR(100)
/* set the parameter value */
SET @EmpID = 1001
/* Build Transact-SQL String by including the parameter */
SET @SQLQuery = 'SELECT * FROM tblEmployees WHERE EmployeeID = @EmpID'
/* Specify Parameter Format */
SET @ParameterDefinition = '@EmpID SMALLINT'
/* Execute Transact-SQL String */
EXECUTE sp_executesql @SQLQuery, @ParameterDefinition, @EmpID
现在我想使用参数动态地获取TABLE NAME
,但我尝试失败了。请指导我。
sp_executesql
,这只能通过将其替换到字符串中来实现。 这些是非常不同的。 参数化允许类型检查、保护免受SQL注入攻击、执行计划重用等。 将字符串替换为其他字符串并没有做到这一点,因此不是参数化。 - MatBailie