在SQL Server中,如何为表创建引用变量?

时间:2010-06-18 10:18:19

标签: sql sql-server tsql variables dynamic-sql

我目前正在使用sp_executesql来执行带有动态表名的T-SQL语句。但是,看到类似的东西真的很难看:

set @sql = 'UPDATE '+Table_Name+' SET ... WHERE '+someVar+' = ... AND '+someVar2' = ...'
sp_executesql @sql

我更愿意拥有的是一个TABLE变量,它是对表的引用,所以我可以这样做:

UPDATE TableRef SET ... WHERE ...

因为当我有很长的T-SQL语句时,由于字符串中的格式很难读取它。

任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:1)

为什么不将参数传递给sp_executeSQL呢?

http://msdn.microsoft.com/en-us/library/ms188001.aspx

我也读过这篇文章http://www.sommarskog.se/dynamic_sql.html

答案 1 :(得分:0)

你做不到。如果要在SQL中使用动态表名,则必须将其连接到字符串中。

如果在查询中有很多对表名的引用,可以通过别名表名来缩短它,对于所有其他实例,使用别名。

e.g。

SET @SQL = 'UPDATE t SET.... FROM ' + @TableName + ' t WHERE ....'

使用像这样的动态SQL时要非常小心。确保你防范SQL注入。