从DynamicNamed表中选择基于静态表的数据

时间:2014-11-14 13:05:34

标签: sql sql-server sql-server-2008

我需要你们所有人的帮助..

我在SQL数据库中有未知数量的动态表

就像下面一样,

=>User_Master
UserCode UserName
aaa       AAA
bbb       BBB

=>aaa_EmailInfo
UserCode    EmailId
aaa       aaa@gmail.com
aaa       aaa1@gmail.com

=>bbb_EmailInfo
UserCode    EmailId
bbb       bbb@gmail.com
bbb       bbb1@gmail.com
bbb       bbb2@gmail.com


Declare @CheckEmail VARCHAR(500) = 'aaa@gmail.com'

SELECT

    User_Master.UserCode,

    (SELECT User_Master.UserCode+'_EmailInfo'.EmailId FROM User_Master.UserCode+'_EmailInfo') EmailId

FROM User_Master

下面, User_Master是静态表, 但是,在UsedCode上使用Named动态生成aaa_EmailInfo和bbb_EmailInfo。 现在我想检查@CheckEmail是否存在于动态表中而不是

怎么可能?

任何人都可以建议我SELECT查询???

1 个答案:

答案 0 :(得分:0)

您可以使用sp_executesql。详细信息为HERE您可以使用COUNT(*)来确定表中是否存在@CheckEmail。

DECLARE @CheckEmail VARCHAR(500);
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @Cnt int;

SET @CheckEmail = 'aaa@gmail.com';
SET @SQLString = N'SELECT @cntOUT = count(*) 
   FROM User_Master.UserCode'+'_EmailInfo'+' WHERE EmailID = @CheckEmail';
SET @ParmDefinition = N'@CheckEmail VARCHAR(500), @cntOUT int OUTPUT';

EXECUTE sp_executesql @SQLString, @ParmDefinition, @cntOUT=@cnt OUTPUT;
SELECT @cnt;