JOIN中的动态表名称

时间:2013-03-25 16:55:24

标签: sql sql-server-2008-r2

我可以从动态值创建一个表,但是当我在连接中使用它时,我无法引用该表。

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

CROSS JOIN @EmpTable emp

我收到以下消息:

  

Msg 1087,Level 16,State 1,Line 19   必须声明表变量“@EmpTable”。

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

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

我想知道是否有人这样做过,或者知道是否有可能。

1 个答案:

答案 0 :(得分:1)

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


'cross join' + '[dbo].[employee_'+@UserName+'] temp' ....