在我的T-SQL脚本中,我多次引用相同的长表名。我在不同的表上使用此查询。
有没有办法按变量引用表名?如果是这样,我可以在脚本将使用的顶部简单地声明一个变量,只需设置值,我就可以在各种表上运行它而无需在脚本中进行更改。
答案 0 :(得分:8)
有两种选择。
在单个SQL语句中,您可以对表名进行别名,如下所示:
SELECT *
FROM MySuperLongTableName T
WHERE T.SomeField=1
如果您需要跨多个脚本执行大量语句,则同义词可能是更好的选择:
CREATE SYNONYM SuperT FOR dbo.MySuperLongTableName
答案 1 :(得分:1)
您可以为该表创建一个同义词,但显然您需要确保在脚本运行时没有人更改同义词的定义(并且没有脚本的并行调用)
你在SSMS中运行这些吗?如果是这样,您可以设置SQL CMD
模式(在“查询”菜单上)并使用
:setvar tablename "spt_values"
use master
select * from $(tablename)
答案 2 :(得分:1)
你可以这样做:
Declare @TableName As nvarchar(max)
Declare @SQL AS nvarchar(max)
@TableName = 'longtablename'
@SQL = 'Select * From ' + @TableName
EXEC(@SQL)