在SQL Server中,我如何创建一个指向表的引用变量?

9

我目前正在使用sp_executesql来执行一个带有动态表名的T-SQL语句。然而,看到像这样的东西真的很丑陋:

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

我希望有一个TABLE变量,它是指向一个表的引用,这样我就可以做例如下面这样的操作:
UPDATE TableRef SET ... WHERE ...

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

任何建议都会很有帮助。


顺便说一句,不是SET sql = ...,而是SET @sql = ... - abatishchev
是的,感谢您的修复。每当我按@键时,我都会得到一个引用块。我不知道我可以这样做。谢谢。 - Jón Trausti
注:该产品称为“SQL Server”,而不是“MSSQL”。 - John Saunders
2个回答

1

看起来很合理,感谢提供有用的网站。由于无法引用变量中的表格,我将把您标记为此问题的答案。谢谢。 - Jón Trausti

0

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

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

例如:

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

使用动态SQL时一定要非常小心,确保自己免受SQL注入攻击。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接