tsql -如何在整个.sql文件上缩写表名?



想象一个非常长的模式&表名,可能是:MyTableSchemaV098AlphaCentauri.MyTableNameblahblah.

在单个查询中,很容易缩写为:

Select A.* 
from MyTableSchemaV098AlphaCentauri.MyTableNameblahblah as A

如何为整个.sql文件做到这一点?我是这样想象的:

With MyTableSchemaV098AlphaCentauri.MyTableNameblahblah as A:
Select A.* from A
Select top 10 A.* from A
End With

您可以切换到SQLCMD模式并使用setvar:

:setvar alias "sys.databases"
SELECT name FROM $(alias);
SELECT COUNT(*) FROM $(alias) WHERE state = 0;

如果你没有在SSMS中交互式地运行脚本,并且不能用某种预解析器执行这种标记/替换,那么不,你不能在T-SQL中这样做。您可以按照Larnu的建议使用同义词,但这是脆弱的,因为它会杀死并发性。

CREATE SYNONYM dbo.alias FOR really_long_schema_name.object_name;
GO
SELECT * FROM dbo.alias;
SELECT TOP (1) * FROM dbo.alias;
GO
DROP SYNONYM dbo.alias;

最新更新