是否有办法为表提供别名,然后在存储过程中引用该表。
Declare @target= (sometalbewithveryverylonganduglyname)
Declare @source= (anothertablewithaveryuglyverylongverybadname)
Select * from @target
Insert into @target select from @source
delete from @source
原因是,表源和目标可能会发生变化(如果更改了表名,那么我们只需更改一个位置),以提高可读性。
答案 0 :(得分:0)
在T-SQL中你不能这样做:
Select * from @target
除非将@target
定义为表变量,否则需要先将表设置为用户定义的类型。如果您尝试将物理表的名称分配给变量并以这种方式访问它,则需要使用动态SQL执行该语句。
exec ('Select * from @target')
如果您只想对表格进行别名,可以像这样编写查询:
Select * from sometalbewithveryverylonganduglyname AS t
从您的问题来看,表名可能会发生变化,因此您最终需要使用动态SQL。
答案 1 :(得分:0)
除非你像Yuck建议的那样使用动态SQL,否则你无法做你所描述的内容,但是为了不写长表名而这样做并不是一个有效的理由。 SSMS已包含智能感知,对于SQL Server 2005及更低版本,您可以使用许多free tools out there中的一个。这应该减少你需要做的输入量以及错误拼写错误。
此外,您始终可以select t.column1 from really_long_and_ugly_name t ...
答案 2 :(得分:0)
选项1)在这种情况下,您不想使用存储过程,使用一些ORM库,它将允许您在具有相同结构的不同表名之间切换非常容易
选项2)使用视图,这就是它们的用途,隐藏基础表并允许这些类型的更改