我目前正在使用sp_executesql来执行带有动态表名的T-SQL语句。但是,看到类似的东西真的很难看:
set @sql = 'UPDATE '+Table_Name+' SET ... WHERE '+someVar+' = ... AND '+someVar2' = ...'
sp_executesql @sql
我更愿意拥有的是一个TABLE变量,它是对表的引用,所以我可以这样做:
UPDATE TableRef SET ... WHERE ...
因为当我有很长的T-SQL语句时,由于字符串中的格式很难读取它。
任何建议都会有所帮助。
答案 0 :(得分:1)
为什么不将参数传递给sp_executeSQL呢?
答案 1 :(得分:0)
你做不到。如果要在SQL中使用动态表名,则必须将其连接到字符串中。
如果在查询中有很多对表名的引用,可以通过别名表名来缩短它,对于所有其他实例,使用别名。
e.g。
SET @SQL = 'UPDATE t SET.... FROM ' + @TableName + ' t WHERE ....'
使用像这样的动态SQL时要非常小心。确保你防范SQL注入。