2013-03-25 38 views
0

我能够从动态值创建表,但我在连接中使用它时无法引用该表。JOIN中的动态表名

DECLARE @UserName varchar(5) 
DECLARE @EmpRacfid varchar(max) 
SET @UserName = RIGHT(SYSTEM_USER,5) 
SET @EmpTable = 'dbo.Employee_' + @UserName 

CROSS JOIN @EmpTable emp 

我得到以下信息:

消息1087,级别16,状态1,行19 必须声明表变量 “@EmpTable”。

我也尝试过这样的事情,但它也失败:

CROSS JOIN '[dbo].[Employee_' + @UserName + ']' emp 

我想知道是否有人已经做到了这一点,或者知道它是可能的。

回答

1

如果你想加入动态表名,那么你需要把你的整个脚本放在动态构建的sql中,并使用EXEC来执行整个动态sql。如下:


'cross join' + '[dbo].[employee_'[email protected]+'] temp' ....